看下面的例子:
string foo(int i) {
string a;
... Process i to build a ...
return a;
}
void bar(int j) {
const string& b = foo(j);
cout << b;
}
我知道 RVO 和 NRVO,但我认为为了做到这一点,我需要编写 bar 如下:
void bar(int j) {
string b = foo(j);
cout << b;
}
两个版本似乎都有效,我相信具有相同的性能。使用第一个版本(带有 const 参考)是否安全?
谢谢。