Shuhei Kagawa

基本クラスのメンバを初期化できない

@2009-07-28 20:01

またまた少しはまりました。

C++ のコンストラクタは、基本クラスのメンバを初期化できないそうです。
以下のように書くとエラーになります。

class A {
protected:
  int foo;
};

class B : public A {
public:
  B(int value) : foo(value) {
  }
};

親クラスのコンストラクタでも初期化をしていると、子クラスのコンストラクタで初期化しても上書きされてしまうからでしょうか。
なかなか面倒なものですね。

参考サイト
覚え書き:C++のコンストラクタに関する注意点 – A7M の日記