C++,函数返回一个字符串的引用 是什么意思??比如function()的返回值是string &

C++,函数返回一个字符串的引用 是什么意思??比如function()的返回值是string & 然后我这样子:string astring=function(); 那么astring会怎样??变成返回值的引用吗?还是被赋值了而已?

只是仅仅被赋了值。

如:

string str="Hello,China";
string & function(){
   return str;
}

int main(){
 
  string astring=function();   // 只是仅仅被赋了值。
  string &astring2=function(); // 引用
  return 0;
}

追问

那不应该要string & astring=function()才行吗?新建引用变量不是要加&吗?

追答

是这样子的:function()确实是返回了引用,准确地说,是返回了str的基地址,但是在赋值给左值时,该左值是普通的字符串变量,而该普通变量只能接受具体的值所以编译器就会自动将str的值取出来给astring。反之,如果左值是引用类型,那么左值变量就会指向str的基地址,即我们所说的引用str.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-05
只是被赋值了。function返回的引用会再经过一次赋值拷贝
相似回答