函数参数中的const和&用法

经常会看到如下函数实现:
fun(int* in, const std::string& str)
{

}

请问std::string str和std::sring& str(单加 &)和const std::string str (单加 const)和const std::string& str(const和 &都加了) 4者有何区别呢?分别都是什么情况用?

答:std::string str,str可以被修改,而且会调用拷贝构造函数。
std::sring& str,str可以被修改,但不会调用拷贝构造函数。
const std::string str ,str不能被修改,但会调用拷贝构造函数。
const std::string& str,str不能被修改,而且也不会调用拷贝构造函数。

有时候为了追求效率减少复制,又希望避免改变原来的str,则可在引用的基础上加const修饰,这样函数中就不能再修改str的内容(否则会编译出错),此时就会使用第四种场景。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值