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

时间:2014-02-07 21:15:18

标签: 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;
}

我的问题是:在作为初始化参数传递给B.bar的构造函数之前 保证 p>

换句话说:如果我创建A的实例是B,保证是指向B->foo实例的有效指针?

1 个答案:

答案 0 :(得分:8)

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