#include<iostream> using namespace std; class Cshape { public: void SetColor(int color) { m_nColor=color; } void virtual Display(void) { cout<<"Cshape"<<endl; } private: int m_nColor; }; class Crectangle: public Cshape { public: void Display( void) { cout<<"Crectangle"<<endl; } }; class Ctriangle:public Cshape { void Display( void) { cout<<"Ctriangle"<<endl; } }; class Cellipse :public Cshape { public: void Display(void) { cout<<"Cellipse"<<endl; } }; void main() { Cshape obShape; Cellipse obEllipse; Ctriangle obTriangle; Crectangle obRectangle; Cshape *pShape[4]= {&obShape,&obEllipse,&obTriangle,&obRectangle}; /*在基类指针或引用请求使用虚函数时,c++会在 对象关联的派生类中正确地选择重定义的函数*/ for( int I= 0; I< 4; I++) pShape[I]->Display(); obEllipse.Display(); return; }