依靠数据成员初始化来实现

时间:2017-05-29 09:45:29

标签: c++

假设类D维护类C的对象向量,并假设向量的前三个元素应该可以通过数据成员field0 .. field2访问,这些成员是类C的对象。

如果我们在声明时初始化数据成员field0 .. field2,并且D的任何构造函数都没有使用显式的mem-initializer列表,那么它是否保证数据成员将始终初始化为对向量中保存的对象的正确引用(如果我们考虑子类化,复制,移动,...类D的对象)?

请注意,问题不是关于初始化的顺序,而是更多关于"使用D类(包括子类)的任何事情都可以防止数据成员被初始化"?

class C{
};

class D{
protected:
    std::vector<C> myC = std::vector<C>(3);
public:
    C &field0 = myC[0];
    C &field1 = myC[1];
    C &field2 = myC[2];

    D () {};  // no mem-initializers
};

0 个答案:

没有答案