これどういうルールだったか忘れた
ロベールのp.647
#include<iostream> using namespace std; class ABase { public: ABase() : m_x(0) {} //このコンマなんだっけ virtual ~ABase() {} void Set(int x){ m_x = x;} protected; int m_x; }
ロベール本 pp.351-353
コンマを使って基底クラスのコンストラクタを呼べる
この記法はメンバ変数のコンストラクタを呼ぶときにも使う
double型のような基本型もコンストラクタを持つ
ということなので、
ABase() : m_x(0) {}
はABaseコンストラクタ(この場合は実装がないのでデフォルトコンストラクタと一緒)が呼び出された時に
メンバ変数であるm_xをゼロで初期化することになる。
→m_xはint型、Protected(基底クラスなのでPrivateにはなっていない)で宣言されている
→int型のような基本型はコンストラクタを持ち、”変数名()”という形式
→m_x(0) はm_xをゼロで初期化(”代入”ではなく!)することになる