函数重载和引用(C++)

函数重载

函数重载:类似于中国文字的多义,相同的一个词却表达不同的意思。C++中便有同该函数名函数却实现不同功能的函数,这种函数便被称为重载函数,即该函数名被重载!
如下:
图1
函数重载的条件:
1、必须是在同一个作用域内。(划重点,经常忽略)
2、必须是相同的函数名
3、函数的形参列表必须不同,其中形参列表的不同包括以下几个方面:
(1)、参数个数不同。
这里写图片描述
(2)、参数类型不同。
这里写图片描述
(3)、类型不同的参数次序不同。
这里写图片描述
注意: 1、仅仅是函数返回值不同,不能形成重载!!
这里写图片描述
2、有缺省参数的函数与无参数的函数不共存会导致出现对函数重载调用的不明确错误!
这里写图片描述

引用

引用:可以理解为取外号,不同的名字,代表的实体却是同一个。并且引用变量和引用的变量共用一块内存空间,编译器不会给引用变量重新开辟一块空间。
这里写图片描述
格式:引用实体类型& 引用变量名 = 引用实体;
这里写图片描述

引用的特性:
1、定义引用变量必须要初始化
2、一个变量可以有多个引用;(比如:一个人有多个外号
3、引用只能引用一个实体;(比如:多个人是一个外号,会导致定义不明确的问题)
数组引用:

    int main()
    {
        int array[10] = {1,2 ,3, 4, 5, 6, 7, 8, 9, 0};
        int(& rarray)[10] = array;

        return 0;
    }

使用场景:作为函数形参函数返回值。作为函数返回值时,不要返回栈空间上的引用(原因是:会被释放,造成其内容被修改)

这里写图片描述

之前,我们知道的传参方式有两种:传值和传址,现在引入了第三种传参方式:传引用

那么在这三个传参方式的比较上,各自的效率是怎么样呢?

传值最好,其次传址与传引用相差不大!

指针和引用有什么差别呢?

首先,他们两个的底层实现方式完全一样,都是采用指针的方式进行实现,也就导致他们的效率相差不大!
除此之外,他们更多的是不同:
1、sizeof中,引用计算的是其实体类型的大小,而指针计算的是指针类型的大小!

int main()
{
    char a = 0;
    char& b = a;
    char* c = &a;

cout << sizeof(c) << endl;
cout << sizeof(b) << endl;

return 0;
}

输出结果:
这里写图片描述
2、引用必须初始化,没有NULL引用,而指针没有要求,也有NULL指针。
3、引用只能指向一个实体,而指针可以随时指向任何一个同类型的实体。
4、引用只有一级引用,指针有多级指针。
……

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值