【发布时间】:2011-05-24 08:08:09
【问题描述】:
看下面的例子:
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 引用)是否安全?
谢谢。
【问题讨论】:
标签: c++ reference return-value rvo nrvo