我有一个具有以下结构的类:
class MyClass {
std::string _myField;
constructor
//copy constructor
//assignment operator
}
当我创建对象时,我想交换字符串而不是复制它。不过,这是违反最佳做法的。
因此,有没有其他更好的解决方案来实现这一点(运动操作员)? 即使我使用setXXX并且使用swap也不是最好的决定。
我希望获得最佳表现。
感谢您的帮助!
答案 0 :(得分:0)
为获得最佳性能,请在构造函数中按值传递std :: string,并使用移动构造函数初始化成员变量:
MyClass (std::string s) : _myField (std::move(s)) { /* ... */ }
PS。一般的建议(模式?)似乎总是通过值传递接收参数。
答案 1 :(得分:0)
我希望获得最佳表现。
使用swap
:
swap需要两个操作数 - 显然是成员变量和来自c-tor的参数。也就是说,在调用swap
之前,需要初始化您的成员变量。这将调用一些严格不必要的指令。
为了使用字符串参数构造实例,请使用@ chill的方法。 ;)