如果我有一个组合其他具有相互依赖关系的对象的类,(如何)我应该执行它们的构造顺序?
例如
class Parent
{
Child1 c1;
Child2 c2;
};
想象一下 Child2 的构造函数需要 Child1& 并且我想将 c1 传递给 c2 构造函数。
如果我只是执行以下操作...
Parent::Parent()
: c2(c1)
{
}
...这可能不是一件好事,因为在 c2 的初始化程序运行时可能无法构造 c1?或者在类声明中 c1 在 c2 之前是否足够好?
或者我应该明确引用 c1 构造函数(如果这不是必需的,那么这样做是否是一个好习惯以使其明确?)。例如
class Parent
{
Child1 c1;
Child2 c2;
};
Parent::Parent()
: c1()
: c2(c1)
{
}