天天看點

c++多态性

多态性(polymorphism)是指允許通一個函數(或是操作符)有不同版本,對于不同的對象執行不同的版本。c++支援一下兩種多态

(1)編譯時的多态性,表現為函數名(或操作符)的重載。

(2)運作時的多态性,表現為派生類和虛函數來實作。

函數名重載:編譯器能夠比較具有同名函數的特征,通過識别實參的數目和每個實參的類型,來辨別适用于一個特定調用的哪一個版本。

操作符重載:可用同一個名字定義多種操作,這種能力叫做操作符重載。

虛函數和動态綁定

一個虛函數是一個在基類中被聲明為“virtual”,并在一個或多個派生類中被重新定義的函數。如果在基類聲明中,在一個函數的函數特征之前加一個關鍵字“virtual”,則編譯器将建立一個可由運作環境解釋的資料結構,并由程式執行時而不是編譯時由運作環境來執行對這個函數的調用。

一個抽象類必須作為基類而被其他類繼承,抽象類自己不能生成執行個體,就是說不能由類生成對象,因為抽象類中至少有一個函數沒有實作。如果一個基類中的某個函數聲明為純虛函數,則該基類的任何派生類都必須定義自己的實作。

“virtural”指定實際調用的成員函數将是在運作時動态調用确定的,而不是在編譯時确定的。這種做法叫做動态綁定(dynamic binding)。動态綁定在編譯性面向對象語言中是為了支援所包含的多态性。

本文轉自NewPanderKing51CTO部落格,原文連結:http://www.cnblogs.com/newpanderking/p/3836955.html ,如需轉載請自行聯系原作者

繼續閱讀