例如,我有一个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