程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 程序基石:C++多態的前提條件

程序基石:C++多態的前提條件

編輯:C++入門知識

程序基石:C++多態的前提條件


准備知識

C++中多態(polymorphism)有以下三個前提條件:

必須存在一個繼承體系結構.繼承體系結構中的一些類必須具有同名的virtual成員函數(virtual關鍵字)至少有一個基類類型的指針或基類類型的引用.這個指針或引用可用來對virtual成員函數進行調用.

程序清單:C++中多態(運時行期綁定)

#include 
using 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,就會得到如下結果:

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved