class CSubClass : public CSuperClass { private: int subNum1, subNum2, subNum3; public: CSubClass(int n, int n1, int n2) : CSuperClass(n), subNum1(n1), subNum2(n2) { /// 代入での初期化は望ましくない。 subNum3 = n; } } 具体的には、subNum(n1), subNum2(n2), 等は、コンストラクタを呼び出して初期化しているのと同義です。 つまり、初期化子リストを用いず代入で初期化すると、(↑の例では、subNum3 がこれにあたる) 初期化子リストに無いメンバ変数が、デフォルトコンストラクタで初期化される。 デフォルトコンストラクタで初期化されたメンバ変数に、値を代入する。 ということになり、全く無意味