小编Joh*_*ata的帖子

如果const引用仅花费一个副本,为什么在C++ 11中推荐使用值传递(如果需要副本)?

我试图理解移动语义,右值引用std::move等等.我一直试图通过搜索本网站上的各种问题来解决,如果需要复制,为什么传递const std::string &name+ _name(name)不如std::string name+ + _name(std::move(name)).

如果我理解正确,下面需要一个副本(通过构造函数)加上一个移动(从临时到成员):

Dog::Dog(std::string name) : _name(std::move(name)) {}
Run Code Online (Sandbox Code Playgroud)

替代(和老式)方法是通过引用传递它并将其复制(从引用到成员):

Dog::Dog(const std::string &name) : _name(name) {}
Run Code Online (Sandbox Code Playgroud)

如果第一种方法需要复制并同时移动两种方法,而第二种方法只需要一个副本,那么第一种方法如何首选,在某些情况下更快?

c++ move-semantics c++11

33
推荐指数
3
解决办法
4517
查看次数

标签 统计

c++ ×1

c++11 ×1

move-semantics ×1