什么是多態(tài)
從字面上理解就是多種形態(tài)的意思。而多態(tài)一詞最初源自希臘語(yǔ),其含義便是“多種形式”,意思是是具有多種形式或形態(tài)的情形,在C++語(yǔ)言中多態(tài)有著更廣泛的含義。在C++ primer一書(shū)中把具有繼承關(guān)系的多個(gè)類型稱為多態(tài)類型,因?yàn)槲覀兡苁褂眠@些類型的“多種形式”而無(wú)須在意它們的差異。百度百科上提到在面向?qū)ο笳Z(yǔ)言中,接口的多種不同的實(shí)現(xiàn)方式即為多態(tài)。引用Charlie Calverts對(duì)多態(tài)的描述——多態(tài)性是允許你將父對(duì)象設(shè)置成為一個(gè)或更多的他的子對(duì)象相等的技術(shù),賦值之后,父對(duì)象就可以根據(jù)當(dāng)前賦值給它的子對(duì)象的特性以不同的方式運(yùn)作。簡(jiǎn)單的說(shuō),就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態(tài)性在Object Pascal和C++中都是通過(guò)虛函數(shù)實(shí)現(xiàn)的。
只從概念描述是無(wú)法深刻清晰的理解它的,下面我們就具體分析一下。
1、對(duì)象類型
這里所說(shuō)的對(duì)象類型可以用下面的圖來(lái)體現(xiàn):我們通過(guò)代碼舉例說(shuō)明一下
1 class Derived1:public Base 2 {}; 3 class Derived2:public Base 4 {}: 5 int main() 6 { 7 Derived1* p1 = new Derived1; 8 Base = p1; 9 Derived2* p2 = new Derived1;10 Base = p2;11 return = p212 }
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式