准备知识
C++中多态(polymorphism)有以下三个前提条件:
必须存在一个继承体系结构.继承体系结构中的一些类必须具有同名的virtual成员函数(virtual关键字)至少有一个基类类型的指针或基类类型的引用.这个指针或引用可用来对virtual成员函数进行调用.程序清单:C++中多态(运时行期绑定)
#includeusing namespace std; class CTradesPerson{ // base class public : virtual void sayHi(){ cout<<"Just hi."< >which; }while(which<1||which>3); //set pointer p depending on user choice switch(which){ case 1: p = new CTradesPerson; break; case 2: p = new CTinker; break; case 3: p = new CTailor; break; } // invoke the sayHi method via the pointer p->sayHi(); // ***runt-time binding in effect delete p; // *** free the dymanicall y allocated storage return 0; }
程序清单说明
程序清单的程序阐明了多态及其三个前提条件:
存在一个继承体系结构,CTradesPerson是基类,CTinker和CTailor是CTradesPerson的派生类.继承体系结构中有一个叫sayHi的虚成员函数,它在上述三个类中各自被定义一次,因此共有三个不同的定义(但函数名相同).p是个基类类型的指针.在本程序清单中p的数据类型是CTradesPerson*. 指针p用来实施对虚成员函数sayHi的调用.
测试数据
在该程序的某次运行过程中,我们输入数据1,就会得到如下结果:

当我们输入数据3, 就会得到如下结果:

关于Program Language更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.