c++ copy elision,RVO, 省略不必要的构造和析构, std::move
来源:互联网 发布:淘宝买家秀震动棒 编辑:程序博客网 时间:2024/06/16 18:31
以前c++11 提供了std::move,也就是强行转换到右值,配合移动构造,移动赋值,在实现中将右值的数据窃取过来,并将右值的状态设置好,即可减少许多不必要的操作。
今天查c++11/14/17标准的时候看到了 copy elision 这个东西,也就是说不用上面那一套,直接写成最简便的形式,编译器会帮我们达到最优的方式。
看到了许多以前的讨论,编译器到底能否实现这个还是需要实践上去确认的。
也看到c++11 说到了copy elision
又看到c++17似乎将这个列到了标准里面,不知道以后是不是就可以放心大胆的靠编译器了。
(c++17从标准上保证某些情况下的copy elision,
https://en.wikipedia.org/wiki/C%2B%2B17,
标准文档还没去找)
当然,写成类似下面这样总是没错
void foo( MyClass& mc);
这种,直接在其他地方完全控制生命期,函数里面操作对象即可,不用操心返回什么的
附上一些资料,多是讲过去的情况。。
知乎大神 蓝色 的日志
https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/RVO_V_S_std_move?lang=en
https://www.zhihu.com/question/29511959/answer/44617879
阅读全文
0 0
- c++ copy elision,RVO, 省略不必要的构造和析构, std::move
- C++编译器优化:Copy Elision(省略不必要的拷贝)
- C++构造与析构(12) - copy elision编译器优化
- RVO vs std:move
- RVO V.S. std::move
- Copy Elision
- RVO和 关于几个构造函数的总结
- 关于c++默认的构造函数、析构函数、拷贝构造函数、move函数
- std::move和std::forward
- std::move 和 std::forward
- C++ RVO/NRVO以及move语义的影响
- 【C++】std::copy
- C++编译器优化:Copy Elision
- [C/C++]关于C++11中的std::move和std::forward
- [C/C++]关于C++11中的std::move和std::forward
- [C/C++]关于C++11中的std::move和std::forward
- std::move和std::forwarding完美转发。
- C++11 std::move和std::forward
- 迷宫问题 (广搜并记录路径)
- poj 2112 Optimal Milking 二分最短路网络流
- 层次聚类
- org.apache.cxf.interceptor.Fault: Marshalling Error: XXXX is not known to this context
- solr6.3.0集群安装
- c++ copy elision,RVO, 省略不必要的构造和析构, std::move
- 系统调用、API之间的关系
- 线索二叉树
- 信号与槽的新语法(Qt5)
- Gym
- 【已解决】win10环境下基于nltk搭建stanford parser环境,进行中文依存句法分析
- 深度学习笔记整理
- 动态规划--数塔
- Apple Tree DFS+树状数组