类可以在其成员初始化列表中初始化其非直接基类吗?

时间:2013-02-05 21:43:12

标签: c++ inheritance constructor initialization derived-class

以下代码摘自Apache C++ Standard Library User's Guide

class DerivedOutputStream : public std::ostream {
  public:
    DerivedOutputStream():
      std::ios(0), std::ostream(&dsb) {}        //1
    // ...
  private:
    DerivedStreamBuf dsb;
    // ...
};

请注意std::ios不是DerivedOutputStream的直接基类,但它出现在成员初始化列表中。

我认为这不正确,是吗?

1 个答案:

答案 0 :(得分:3)

如果它是虚拟基类,则是正确的。虚拟基础从最派生的类初始化。