包含内部引用的初始值设定项列表

Initializer lists with internal references

本文关键字:列表 引用 包含内      更新时间:2023-10-16

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

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

这是标准允许的吗?据我了解,应该是,假设类中的成员声明是 A,然后是 B,初始化列表中的顺序无关紧要,因为它们将由它们在类中的物理顺序初始化。

是的

,初始化的顺序是类中成员属性的声明顺序。 此外,根据构造函数B做什么,只要存储引用或指针,将引用传递给尚未初始化的对象是正确的(尽管靠近边缘), 但对象未使用。