前者String &userid是传址操作,可以改变usrid的值,后者是传值操作,不可以改变传入的值。
前面一个是传引用作参数,参数值会在函数内部被改变(跟传指针差不多,效率高),第二个值不会被改变
如果仅仅是传递参数进去,上面两个写法都不好,应该:
string get_telno(const string &userid)
这样不仅不用构造对象副本,也可以保证对象不被修改。
第一个是传一个string引用,和传string指针一样,都是按地址传递函数参数,效率高,且被调函数可以改变传入的实参;
第二个是传一个string对象副本,会创建构造临时对象,效率低,被调函数不能改变实参的值。
如果不希望被调函数改变实参,最好将第二个调用改为:
string get_telno(const string &userid),传一个string常引用,效率高,且不改变传入的实参。
解释的够详细了吧,大家说的都是一个意思,大家可以好好参考,有不明白的共同努力哈!