侯捷C++手把手教学:reference的变量声明、常见用法(参数传递)

本文探讨了C++中引用的概念,如何通过reference在参数传递和返回值中提升效率,并讲解了引用在函数重载中的使用和注意事项,特别提到了const引用的签名作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int x=0;
int* p=&x;
int& r=x;  //r代表x。现在r,x都是0
int x2=5;

r=x2;  //r不能重新代表其他变量。现在r,x都是5
int& r2=r;  //现在r2是5(r2代表r,也相当于代表x)

注意:

sizeof(r)==sizeof(x);
&x==&r;

reference常见用途:参数的传递上面。
reference是一个对语言用户更友好的指针。

void func1(Cls* pobj)  {  pobj->xxx();  }
void func2(Cls obj)  {  obj.xxx();  }
void func3(Cls& obj)  {  obj.xxx();  }
...第二个与第三个被调用端算法相同,很好
Cls obj;
func1(&obj);  //接口不同
func2(obj);
func3(obj);

reference通常不用于声明变量,而用于参数类型和返回类型的描述。
以下被视为“same signature"(所以二者不能同时存在):

double imag(const double& im)  {...}
double imag(const double im)  {...}  //存在二义性

其中const也被算成签名(signature)的一部分,const可以作为函数重载的标签。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值