我想使用初始化列表进行对象初始化以简化对象管理,但问题是对象互相引用。
//B::B(A &a) //The only available constructor for B
class AB
{
A m_a;
B m_b;
AB()
: m_a()
, m_b(m_a)
...
};
标准是否允许这样做?根据我的理解,应该是,鉴于类中的成员声明是A,那么B,初始化列表中的顺序无关紧要,因为它们将在类中按其物理顺序初始化。
答案 0 :(得分:2)
标准是否允许这样做?根据我的理解,应该是,鉴于类中的成员声明是A,那么B,初始化列表中的顺序无关紧要,因为它们将在类中按其物理顺序初始化。
是的,初始化的顺序是类中成员属性声明的顺序。另外,根据B
构造函数的作用,只要参考(或指针)与引用或指针一致,它就是正确的(尽管接近边缘)传递对尚未初始化的对象的引用是正确的存储,但未使用的对象。