例如,我有一個MyClass類和兩個處理MyClass對象的類。如何使用unique_ptr或移動語義?
A類 - 創建MyClass;
B類 - 使用MyClass;
在A和B之間存儲和共享MyClass對象的正確方法是什麼?需要使用新運算符創建MyClass,並將指針存儲在unique_ptr中。或者執行移動c-tor,並創建MyClass作爲堆棧變量?
變體1:
class A
{
public :
unique_ptr<MyClass> mObj;
};
class B
{
B(unique_ptr<MyClass> inObj) : mObj(inObj) {};
public :
unique_ptr<MyClass> mObj;
}
變2:
class A
{
public :
MyClass mObj;
};
class B
{
B(MyClass&& inObj) : mObj(inObj) {};
public :
MyClass mObj;
};
使用:
A a;
B(a.mObj);
我不認爲這是正確的答案。這真的取決於在堆上分配MyClass是否有意義。這可能取決於你的其他代碼。 – Benj