【问题标题】:Can a class initialize its non-immediate base classes in its member initialization list?一个类可以在其成员初始化列表中初始化其非立即基类吗?
【发布时间】:2013-02-05 21:43:11
【问题描述】:

以下代码摘自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 的直接基类,但它出现在成员初始化列表中。

我认为这是不正确的,是吗?

【问题讨论】:

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


    【解决方案1】:

    如果它是一个虚拟基类是正确的。虚拟基是从最派生的类初始化的。

    【讨论】:

    猜你喜欢
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多