Ale*_*Ale 2 c++ copy-constructor
我有A级和B级的组合关系,
class A
{
A(); //default constructor //EDIT
A(const A &mA); // copy constructor //EDIT
virtual ~A();
};
class B
{
B(A *pA); //constructor
B(const B &mB) //copy constructor
virtual ~B(); //EDIT: destructor to eliminate mA and to build the composition
A* mA;
};
Run Code Online (Sandbox Code Playgroud)
我可以用这种方式编写复制构造函数:
B(const B &mB, A *pA)
Run Code Online (Sandbox Code Playgroud)
我需要它来保持复制对象之间的组合.这是错的吗?它是否存在更好的解决方案?谢谢
编辑:我会试着更好地解释我.我想要一个对象mB和对象mA的副本.但是如果在复制构造函数中我写了mA = mB.mA,我会将地址复制到原始对象mA.所以我认为我需要一个深拷贝而不是燕子拷贝.我的困惑是因为现在,从主要的,我首先复制对象mA然后我复制mB.这样做,我想我需要使用外部函数分配复制的对象mA
foo(A *pA)
Run Code Online (Sandbox Code Playgroud)
否则,如果我可以执行mB的深层复制,我可以解决问题.这被称为深拷贝吗?
PS A和B是抽象类
根据定义,复制构造函数不能具有您所描述的签名.以下是复制构造函数的一些有效签名:
B(const B &);
B(B &); // Thanks Oli!
Run Code Online (Sandbox Code Playgroud)
你为什么需要它?您可以通过执行类似的操作来访问复制构造函数中的mA成员(我可能已经犯了一些语法错误):
B::B(const B & original)
{
mA = original.mA;
}
Run Code Online (Sandbox Code Playgroud)