C++中多態(polymorphism)有以下三個前提條件:
必須存在一個繼承體系結構.繼承體系結構中的一些類必須具有同名的virtual成員函數(virtual關鍵字)至少有一個基類類型的指針或基類類型的引用.這個指針或引用可用來對virtual成員函數進行調用.#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,就會得到如下結果: