假设我们在C ++中有两个类:
Class A{
public:
A();
private:
int k;
};
Class B{
public:
B();
private:
A a;
};
我编辑了我的问题,以便任何人有一天都可以访问它。
如何使用另一个B
a
(类型为Class A
}来初始化A
(a_inst
的复制文件? 1}}(让它为12 && 14
)之前已经定义并初始化了吗?
换句话说,ctor B()的代码是什么?
答案 0 :(得分:1)
我会这样做
B(const A ¶mA) : a(paramA) {}
B(A &¶mA) : a(move(paramA)) {}
B(const B &src) : a(src.a) {}
除了复制构造函数之外,我还提出了两个额外的构造函数,一个可以通过A的l值实例初始化,另一个可以用于r值实例。根据A的语义,您可能不需要移动版本。
答案 1 :(得分:0)
Class A{
public:
A();
A(const A& obj);
private:
int k;
};
Class B{
public:
B();
B(const B& obj)
: a(obj.a) { }
B(const A& obj)
: a(obj) { }
private:
A a;
};