让我们来对比一下开启 RVO 和未开启 RVO 时的汇编代码差异,这样对比会更有说服力。 未开启RVO优化时(使用 -fno-elide-constructors的编译选项): createBigObject: ; rdi包含返回值的地址 ; 在返回地址构造BigObject call BigObject::BigObject() ; 调用构造函数 ret ; 返回 main ...