函数返回一个字符串作为右值

时间:2017-06-26 23:48:44

标签: c++11

我是一名新的C ++初学者。我不明白为什么表达

string three() { return "kittens"; }

返回右值。是因为返回的字符串(kittens)是临时值吗?非常感谢你

1 个答案:

答案 0 :(得分:0)

是的 - 它正在使用return语句中的基本(C风格)字符串文字构造一个临时字符串对象,并将其作为临时值返回。调用你的函数的人要么必须将临时右值复制到左值,要么在语句结束时将其丢弃。

或者更确切地说,编译器通过自动调用std :: string的转换构造函数来将您的字符串(const char*)转换为字符串,使您的代码或多或少等效到return std::string("kittens")

Here is a short (but useful) primer on the difference between lvalues and rvalues