string three() { return “kittens”; }
const string four() { return “are an essential part of a healthy diet”; }
根据this文章,第一行是可修改的rvalue,而第二行是const rvalue。有谁能解释这意味着什么?
答案 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 是一个在程序执行期间无法更改的常量。