#include <stdio.h> // コンストラクタ (4) // クラスメンバのコンストラクトの順序 -1 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(m_i+1) // m_ci のコンストラクト時には m_i はまだ初期化されていないため、m_ci の初期値も不定となる。 { 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 ; }