引用---常引用型参数

一.接收常量型实参

•在C++中,一切常量均带有右值属性

•用内容只读的右值对象初始化目标可写的左值引用,将被编译器以放松类型限定为由予以拒绝

•常引用型的形参因其对目标的只读性约束,满足了编译器类型限定从紧不从松的原则,可以接收常量型的实参

•C++98中只有左值引用没有右值引用,因此只能用常左值引用引用右值,当然常左值引用也能引用常或非常左值,故该引用又被称为万能引用

int sum (int const& x, int const& y) 
 { 
    return x + y; 
 }
–int a = 20, b = 30, c = sum (10, a - b); // 字面值常量10是纯右值,a - b表达式的值是将亡右值

二.防止对实参的意外修改

•即便所传递的实参不是常量,只要根据设计,函数不需要也不应该对该实参做任何修改,那么接收该实参的形参同样可以被声明为常引用,
这样一方面避免了对象复制的开销,同时一旦做出对实参的意外修改,将直接引发编译错误,将修改实参所带来的风险降到最低

int sum (int const& x, int const& y) 
 { 
   ++x; // 错误 
   y += 100; // 错误 
   return x + y; 
 }
–int a = 20, b = 30, c = sum (a, b);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值