昊梵体育网

为什么C++里返回局部对象不一定慢 很多人刚学 C++ 时,看到函数里创建了一个

为什么C++里返回局部对象不一定慢
很多人刚学 C++ 时,看到函数里创建了一个局部对象,再把它 return 出去,就会本能地担心:这个对象不是马上要销毁了吗?返回时会不会复制一大份,性能很差?
其实现代 C++ 并没有这么“笨”。很多情况下,编译器会直接把返回值构造到调用方的位置,中间那次 copy 或 move 根本不会发生。这个优化叫 RVO 或 NRVO。到了 C++17,某些返回临时对象的场景还变成了语言层面的保证。
所以返回局部对象不一定慢,关键要看写法。正常写 return obj; 往往比强行 std::move(obj) 更容易触发优化。真正该关注的不是“能不能返回局部对象”,而是有没有写出阻碍优化的代码。C++ 编程 返回值优化 拷贝消除 移动语义 性能优化程序员 cpp编程 算法