






















MyClass create() {
MyClass obj(10);
// ... 处理
return obj; // NRVO 可能发生
}
触发条件:
- obj 的类型与函数返回类型相同(或可隐式转换)
- 函数只有一个返回路径(或多条路径返回同一个变量)
- 编译器认为安全且可优化
- ⚠️ NRVO 不保证被应用,是“可选优化”。
MyClass create() {
return MyClass(42); // 返回临时对象
}
或者
return {}; // 使用聚合初始化
C++17 起:保证 RVO(Guaranteed Copy Elision)
从 C++17 开始,这种情况下必须省略拷贝/移动,称为“强制返回值优化”。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。