// ( c9.C ) // 純粋仮想関数の注意 // #include // 純粋仮想関数を含むクラスは、インスタンスを生成できない class Base { protected: int color ; public: // = 0 ; と定義してある仮想関数を特に純粋仮想 virtual void show_color() = 0 ; // 関数と呼ぶ。 } ; // 純粋仮想関数を含むクラスをベ−スにしている class Point: public Base { // ので、必ず派生クラス内で仮想関数を再定義し public: // なければならない。 Point(void) { color = 1 ; } void show_color() { cout << "Point Color = " << color << "\n" ; } } ; main() { /* これらの例題はエラ−になる Base a ; Base* b = new Base ; Base* c = new Base[3] ; Base* c[3] ; for ( i=0;i<3;i++ ) c[i] = new Base ; ここでエラ−になる */ // 以下はOKである Base* d[2] ; // 注意:これはインスタンスではない。ただの入 Point* r1 = new Point ; // れ物である。 Point* r2 = new Point ; d[0] = r1 ; d[1] = r2 ; d[0]->show_color() ; // Point Color = 1 d[1]->show_color() ; // Point Color = 1 delete r1 ; delete r2 ; Base* List[2] ; Point s ; // Point s() とするとエラ−になる List[0] = &s ; List[1] = NULL ; List[0]->show_color() ; }