Aクラスと Aクラスを継承したAAクラス。AAクラスをnewしたときに各クラスのコンストラクタはどのように挙動するのか?
これは書き方によって異なる
//パターン1
class A {
public : A (){ cout << “A constract” << endl ;
};class AA : public A {
public : AA(){ cout << “AA constract” << endl;
};
パターン1のように記載した場合、AA aa = new AA();とすると、
AAのコンストラクタのみが呼び出され、Aのコンストラクタは無視される
//パターン2
class A {
public : A (){ cout << “A constract” << endl ;
};class AA : public A {
public : AA(): A() { cout << “AA constract” << endl;
};
パターン2の場合は、親のAコンストラクタが起動したのちにAAコンストラクタが起動する。
動作確認したコンパイラはg++
参考サイト:http://www.kishiro.com/programming/cpp/super_constructor.html