靜態多型就是函式過載
動態多型是使用虛函式來實現的。如下面的demo中雖然test()方法是以a&型別接收的引數,但是還是會呼叫子類的func()。這是由虛函式實現的。如果父類中的函式沒有加virtual,那麼用父類指標接收到子類物件也僅是把子類中父類的部分單獨看成了乙個父類物件,呼叫的還是父類物件的成員函式。
如果把父類中的虛函式寫成 virtual void func()=0;這個語法就是純虛函式。如果類中存在純虛函式,這個類就是抽象類,就無法建立物件了。抽象類的子類必須重寫純虛函式,否則也是個抽象類。
class a {
public:
virtual void func(){
cout<<"父類方法"public:
void func(){
cout<<"子類方法"a.func();
int main(){
b b;
test(b);
return 0;
多型,虛函式,純虛函式
多型 借助虛函式,基類指標既可以使用基類 父類 的成員函式,也可以使用派生類 子類 的成員函式,它有多種形態,或多種表現方式,這就是多型 簡單說就是同一條語句可以執行不同的操作,看起來有不同表現方式,這就是多型。多型存在的三個條件 注意 派生類 子類 中的虛函式必須覆蓋 不是過載 基類 父類 中的虛...
C 中虛函式,純虛函式以及多型
關於建構函式和析構函式 在整理排序演算法的時候想到可以藉此熟悉一下類的構造以及繼承等知識點,就寫了乙個排序基類宣告乙個排序函式,然後寫多個排序演算法的子類重寫這個排序函式,過程中順便研究了一下virtual和多型的概念。首先回顧一下虛函式和純虛函式的八股文,虛函式是多型的實現機制,宣告乙個虛函式就是...
C 多型, 虛函式, 純虛函式
多型 不同物件接收相同的訊息產生不同的動作。多型包括 編譯時多型和 執行時多型 執行時多型是 通過繼承和虛函式來體現的。編譯時多型 運算子過載上。封裝可以隱藏實現細節,使得 模組化 繼承可以擴充套件已存在的 模組 類 它們的目的都是為了 重用。多型也有 重用的功能,還有解決專案中緊耦合的問題,提高程...