什么是多態(tài)
從字面上理解就是多種形態(tài)的意思。而多態(tài)一詞最初源自希臘語,其含義便是“多種形式”,意思是是具有多種形式或形態(tài)的情形,在C++語言中多態(tài)有著更廣泛的含義。在C++ primer一書中把具有繼承關(guān)系的多個類型稱為多態(tài)類型,因為我們能使用這些類型的“多種形式”而無須在意它們的差異。百度百科上提到在面向?qū)ο笳Z言中,接口的多種不同的實現(xiàn)方式即為多態(tài)。引用Charlie Calverts對多態(tài)的描述——多態(tài)性是允許你將父對象設(shè)置成為一個或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態(tài)性在Object Pascal和C++中都是通過虛函數(shù)實現(xiàn)的。
只從概念描述是無法深刻清晰的理解它的,下面我們就具體分析一下。
1、對象類型
這里所說的對象類型可以用下面的圖來體現(xiàn):我們通過代碼舉例說明一下
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 }