1

次のコードは、 Apache C++ 標準ライブラリ ユーザーズ ガイドからの抜粋です。

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

std::iosは の直接の基本クラスではありませんがDerivedOutputStream、メンバーの初期化リストに表示されることに注意してください。

それは正しくないと思いますよね?

4

1 に答える 1

3

仮想基底クラスであれば正解です。仮想ベースは、最も派生したクラスから初期化されます。

于 2013-02-05T21:49:53.670 に答える