初始化列表包含内部引用

时间:2012-06-26 01:50:29

标签: c++ initialization-list

我想使用初始化列表进行对象初始化以简化对象管理,但问题是对象互相引用。

//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,初始化列表中的顺序无关紧要,因为它们将在类中按其物理顺序初始化。

1 个答案:

答案 0 :(得分:2)

  

标准是否允许这样做?根据我的理解,应该是,鉴于类中的成员声明是A,那么B,初始化列表中的顺序无关紧要,因为它们将在类中按其物理顺序初始化。

是的,初始化的顺序是类中成员属性声明的顺序。另外,根据B构造函数的作用,只要参考(或指针)与引用或指针一致,它就是正确的(尽管接近边缘)传递对尚未初始化的对象的引用是正确的存储,但未使用的对象。