// ( r11.C ) // インスタンスの生成 // #include class Vector { // 例題1 public: int x,y ; public: Vector(void) { cout << "void V create\n" ; } Vector( int a,int b ) { // Vector( int a=0,int b=0 ) にすると x = a ; y = b ; // Vector(void) は定義できない。同じことを表わすため。 cout << "V create\n" ; } Vector( const Vector& v ) { x = v.x ; y = v.y ; cout << "copy V create\n" ; } ~Vector() { x = y = 0 ; cout << "V delete\n" ; } void show() { cout << "Vector = " << x << endl ; } } ; class Color { // 例題2 int color ; public: Color( void ) {} 下のどちらかを定義すること。 // Color( int c=0 ) { color = c ; } } ; class Layer { int layer ; public: void set_layer( int l ) { layer = l ; } } ; main() { // Vector v(2,2) ; // V create, V delete // Vector v(2,2) ; // V create // Vector v1 = v ; // copy V create, V delete, V delete // Vector v(2,2) ; // V create // Vector v1(v) ; // copy V create, V delete, V delete // Vector v ; // void V create // Vector v1(v) ; // copy V create, V delete, V delete Vector* v = new Vector( 2,2 ) ; // V create Vector* v1 ; v1 = v ; v1->show() ; // v1(v) ; はエラ−になる! delete v ; // V delete Color c ; // Color( int c ) だけのコンストラクタだとエラ−になる。 Layer l ; // コンストラクタがないので、エラ−は出ない。 }