C++の継承時のコンストラクタ

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