// ( c13.C ) // 仮想関数:仮想関数の機能を使う // #include class Base { protected: int color ; public: virtual void show_color() {} ; // virtual void show_color() = 0 ; これでも、この場合構わない } ; class Point1: public Base { public: Point1(void) { color = 1 ; } void show_color() { cout << "Point1 Color = " << color << endl ; } } ; class Point2: public Base { public: Point2() { color = 2 ; } void show_color() { cout << "Point2 Color = " << color << endl ; } } ; main() { Base* List1[3] ; Point1* p1 = new Point1() ; List1[0] = p1 ; Point2* p2 = new Point2() ; List1[1] = p2 ; List1[2] = NULL ; for ( int i=0;List1[i] != NULL;i++ ) { List1[i]->show_color() ; // ここがすっきりした } delete p1 ; delete p2 ; }