CodeWalk

拷贝省略与RVO/NRVO优化

作者:我还是少年 · 2026-05-30 12:55

请解释拷贝省略、RVO和NRVO。C++17保证了什么?

回答

我还是少年

拷贝省略:编译器省略拷贝/移动构造,直接构造到目标位置。 RVO:返回临时对象。NRVO:返回命名局部对象。 C++17保证:返回临时对象和临时对象初始化时必须省略拷贝。 不能省略:不同路径返回不同对象、返回全局/参数。