// ( c18.C ) // 多重継承を使う−その2 // #include void disp() { cout << "Haruo kun desu\n" ; // 注意!ただの関数 } class A { public: void disp() { cout << "I am A\n" ; } int geti() { return 1 ; } } ; class B { public: void disp() { cout << "I am B\n" ; } int geti() { return 2 ; } void katou() { cout << "katou kun desu\n" ; } ; } ; class AB:public A,public B { public: AB() {} // AB a1 ; の定義に必要 void disp() { cout << "I am AB desu\n" ; } void disp_AB() { A::disp() ; B::disp() ; disp() ; // class AB の disp ::disp() ; // 注意!ただの関数の disp } int geti_A() { return A::geti() ; } } ; main() { AB a1 ; a1.disp() ; // I am AB desu a1.disp_AB() ; // I am A,I am B,I am AB desu,Haruo kun desu a1.A::disp() ; // I am A a1.B::disp() ; // I am B cout << a1.geti_A() << "\n" ; // 1 cout << a1.B::geti() << "\n" ; // 2 a1.katou() ; // katou kun desu : 継承の機能による // AB* a2 = new AB ; // ポインタの場合 // a2->disp() ; a2->A::disp() ; delete a2 ; } /* [結果] I am AB desu I am A I am B I am AB desu Haruo kun desu I am A I am B 1 2 katou kun desu */