我有需要給他們由常量左值(其中將被複制)和右值引用(速度)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這是一個好主意。如果我沒有找到別的方法而沒有複製任何東西,我可能會使用它。 –