string get_telno(string &userid) 和 string get_telno(string userid) 有什么区别

前者String &userid是传址操作,可以改变usrid的值,后者是传值操作,不可以改变传入的值。


前面一个是传引用作参数,参数值会在函数内部被改变(跟传指针差不多,效率高),第二个值不会被改变


如果仅仅是传递参数进去,上面两个写法都不好,应该:

string get_telno(const string &userid)

这样不仅不用构造对象副本,也可以保证对象不被修改。


第一个是传一个string引用,和传string指针一样,都是按地址传递函数参数,效率高,且被调函数可以改变传入的实参;
第二个是传一个string对象副本,会创建构造临时对象,效率低,被调函数不能改变实参的值。
如果不希望被调函数改变实参,最好将第二个调用改为:
string get_telno(const string &userid),传一个string常引用,效率高,且不改变传入的实参。


解释的够详细了吧,大家说的都是一个意思,大家可以好好参考,有不明白的共同努力哈!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值