我有需要给他们由常量左值(其中将被复制)和右值引用(速度)C++,采取常量左值和右值引用在函数
struct Object {
...
Object(Object&& o) { ... }
Object(const Object& o) { ... }
...
};
...
struct SomeClass {
...
Object arr[7];
void copy(int pos,const Object& o) { arr[pos] = o; }
void copy(int pos,Object&& o) { arr[pos] = o; }
...
};
采取可变能力的几种方法
因此,两个复制方法在SomeClass中是完全相同的。唯一的区别是在一个对象中被传递为const,它将被复制,并且在另一个对象被传递给一个快速拷贝作为右值引用被使用。
这两种方法的代码是完全相同的。
现在,在上面的例子中没有那么悲惨,但是,我的方法有点大了,大约9-15行左右。显然,解决方法是像复制它们一样复制它们,但它感觉不对。
如何重新使用复制方法的代码?
你可以通过值和'std :: move'在函数中获取参数。 – Praetorian
好吧,Object类使用右值引用构造函数来“窃取”o对象的成员变量,并让给定的对象不做任何事情。虽然const Object构造函数不能修改对象,也不能窃取它的变量,所以它必须复制。 –
@Praetorian这是一个好主意。如果我没有找到别的方法而没有复制任何东西,我可能会使用它。 –