返回值优化
来源:互联网 发布:web前端软件 编辑:程序博客网 时间:2024/06/05 09:35
返回值优化的本质是编译器做了这样一件事情
我们的代码A do_something(){ A a; ... return a;}编译器这样做了A a;void do_something(A &a){ ...}
编译器在默认情况下,是开启了返回值优化的
struct A{A(){cout<<">>>1"<<endl;}A(const A& b){cout<<">>>2"<<endl;}A(A&&b){cout<<">>>3"<<endl;}~A() {cout<<"<<<"<<endl;}int a = 0;};A ret_A(){A a;return a;}A ret_A1() { A a; return std::move(a);}
int main() {A a = ret_A();}//输出>>>1<<<但是std::move会破坏返回值优化int main() { A a = ret_A1();}>>>1>>>3<<<<<<
但是如果加上编译参数 -fno-elide-constructors 手动关闭返回值优化就会看到如下结果
int main() { A a = ret_A();}>>>1>>>3<<<>>>3<<<<<<
阅读全文
2 0
- 返回值优化
- 返回值优化
- 返回值优化问题
- 返回值优化
- 返回值优化
- 返回值优化问题
- 返回值优化
- 命名返回值优化
- 返回值优化RVO
- C++返回值优化
- C++ 返回值优化
- 返回值优化
- C++返回值优化
- 返回值优化
- C++编译器优化-返回值优化
- C++优化--按值返回和返回值优化
- C++的返回值优化
- 编译器的返回值优化
- JS数据结构: 队列
- 操作系统&文件管理之FCB
- 15、数据结构笔记之十五栈的应用之栈与递归之八皇后问题
- java连接数据库
- 前端学习记录
- 返回值优化
- 堆排序
- Java监听模式
- Svn服务器外网连接之使用花生壳让外网连接我的Svn服务器
- 357. Count Numbers with Unique Digits
- Intellij idea中连接远程数据库出现乱码问题的解决
- SSS1629一级代理|鑫创一级代理商|SSS1629代理商|台湾鑫创
- 16、数据结构笔记之十六栈的应用之栈与递归之汉诺塔问题
- 17、数据结构笔记之十七链表实现多项式