是按值传递然后移动构造更好,还是按引用传递然后复制构造更好
Is it better to pass-by-value and then move-construct or to pass-by-reference and then copy-construct
在C++11中的构造函数中,最好执行以下操作吗:
class A
{
A(std::string str) : mStr(std::move(str)) {}
std::string mStr;
}
或进行
class A
{
A(const std::string& str) : mStr(str) {}
std::string mStr;
}
在哪些情况下,当将右值传递给构造函数时,会发生复制省略?
如果类型的移动构造函数价格低廉,则应该执行"按值传递,然后移动构造",否则应使用"按引用传递,然后复制构造"。
对于lvalues
传递值,然后移动构造
你将做一个拷贝,然后做一个动作。
通过引用传递,然后复制构造
你将做一份
对于R值
传递值,然后移动构造
在最好的情况下(当右值是一个临时表达式时),您将不执行复制/不移动,然后执行移动。
在正常情况下(当右值不是临时表达式时),您将执行一个移动,然后执行另一个移动。
通过引用传递,然后复制构造
您将进行一次复制
相关文章:
- C++:将控制台输出存储在宏中更好吗
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 初始化具有非默认构造函数的std::数组项的更好方法
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 寻找一种更好的方法来表示无符号字符数组
- 哪种方法更好,性能明智
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 寻求更好地理解标准::访问
- 线程消息传递或更好:在"大师班"中访问其他班级的成员
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 如何更好地检查两个 char 变量是否在一组值中?
- 有没有更好的方法对C++中的三个整数进行排序?
- 什么模板用法在阶乘中更好
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 把x-1计算成一个变量然后使用它更好吗
- 创建对象数组然后有效删除它们的更好方法
- 更好的做法是在数组中插入值,然后排序,或者在插入时保持排序顺序
- 是按值传递然后移动构造更好,还是按引用传递然后复制构造更好