可修改的rvalue和const rvalue之间有什么区别?

时间:2017-03-25 16:58:35

标签: c++ rvalue

string three() { return “kittens”; }

const string four() { return “are an essential part of a healthy diet”; }

根据this文章,第一行是可修改的rvalue,而第二行是const rvalue。有谁能解释这意味着什么?

2 个答案:

答案 0 :(得分:4)

使用std :: string的复制构造函数复制函数的返回值。如果您使用调试器逐步执行程序,则可以看到。

正如conments所说,这是非常自我解释的。返回时,第一个值将是可编辑的。第二个值是只读的。这是一个恒定的值。

例如:

int main() {


   std::cout << three().insert(0, "All ")  << std::endl; // Output: All kittens.

   std::cout << four().insert(0, "women ") << std::endl; // Output: This does not compile as four() returns a const std::string value. You would expect the output to be "women are an essential part of a healthy diet”. This will work if you remove the const preceding the four function.

}

答案 1 :(得分:0)

rvalue 是可以在赋值运算符的写入侧写入的值。 可修改的Rvalue 是一个(因为它可以从名称中看到),其值可以在执行期间的任何时间更改。而另一方面, const Rvalue 是一个在程序执行期间无法更改的常量。