假设我们在C ++中有两个类:
Class A{
public:
A();
private:
int k;
};
Class B{
public:
B();
private:
A a;
};
我对问题进行了编辑,以使它有一天对任何人都更有用。
我如何编写
B
的副本ctor(确实是副本ctor?),以便使用a
的另一个对象实例(使其为Class A
)初始化A
(类型为a_inst
)。哪些已经定义和初始化过?换句话说,ctor B()的代码是什么?
最佳答案
我会这样
B(const A ¶mA) : a(paramA) {}
B(A &¶mA) : a(move(paramA)) {}
B(const B &src) : a(src.a) {}
除了复制构造函数外,我还提出了两个附加的构造函数,一个可以通过A的l值实例初始化,而另一个可以通过r值实例初始化。根据A的语义,您可能不需要移动版本。