在基类初始化列表中传递成员对象是否可以?

j b*_*j b 2 c++ inheritance initialization initializer-list

我有两个类,其中一个是基类,包含指向派生类上的成员对象的指针.

像这样:

class Bar { };

class Foo : Bar { };

class A
{
    public:
         A(Foo *foo) { this->foo = foo };

    private:
        Foo *foo;
}

class B : public A
{
    public:
        B() : A(&bar) { };

    private:
        Bar bar;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:B.bar 保证作为初始化参数传递给构造函数之前被分配A

换句话说:如果我创建的一个实例BB->foo保证是一个有效的指针的一个实例Bar

Ker*_* SB 8

基础子对象在成员对象之前构造.指针和对所有成员的引用都是有效的,但在构造之前不得访问实际对象.

  • +1同样在销毁.基类析构函数也不能使用对象引用/指针,因为派生的析构函数已经将它发送到深渊. (5认同)