#include <stdio.h> // コンストラクタ (5) // クラスメンバのコンストラクトの順序 -2 class Cint { int m_x ; public: Cint( int x=0 ){ printf(" Cint::Cint(%d)\n", x) ; m_x = x ; } int get(void) {return m_x ;} } ; class C { Cint m_ci ; int m_i ; public: C( int i=0 ): m_i(i), // m_i を先に初期化するつもりでこう書いても、メンバの初期化は宣言順に行われる。 m_ci(i+1) // 初期化は他のメンバの値に依存しないような方法で行う。 { printf("C::C(%d)\n", i) ; } void show(char* msg=""){ printf("%s(%d,%d)\n", msg, m_ci.get(), m_i) ; } } ; int main(void){ C a(1) ; a.show("a=") ; return 0 ; }