// Polymorphism で基底クラス(抽象クラス)の、複数ある純粋仮想関数を // 全てオーバーライド(overriding)してなくても OK か ? #include <iostream> using namespace std; // 抽象クラス class Basic { public: int a; Basic( ) { a = 0; }; virtual ~Basic( ) {}; virtual void foo( ) = 0 ; // 純粋仮想関数 virtual void bar( ) = 0 ; }; // 派生クラス1 class Sub : public Basic { public: // overriding void foo( ) { cout << "I'm Sub.foo( ) " << endl; } void bar( ) { cout << "I'm Sub.bar( ) " << endl; } }; // 派生クラス2 class Sub2 : public Basic { public: // overriding void foo( ) { cout << "I'm Sub2.foo( )" << endl; } // bar( ) はなし }; int main( ) { // Polymorphism Basic *pB = new Sub; Basic *pB2 = new Sub2; // Polymorphism pB->foo( ); pB2->foo( ); delete pB; delete pB2; return 0; } /* 1. ダメです。だから本ソースはコンパイルエラーになります。 ========================================== */ // end of file