由於兒子類是從父親類派生出去的,因此兒子類的物件也會繼承父親類的屬性和功能(資料和函式),比如說這個兒子叫小明,那麼他就是兒子類的乙個物件。小明繼承了父親類的一些屬性(矮個)和功能(擅長跳躍)。由於他們的關係非常親密,因此我們可以用指標將他們聯絡起來。
father *pfather=new son;
由於在堆中建立的物件都是匿名的,因此建立的時候必須用類名來建立,而且要訪問他們必須用指標。該段語句的意思是在堆上建立乙個新的son
物件,並且返回指向該物件的指標,而賦值操作符
=又將該指標賦給了指向
father
的指標。這樣的好處是
son物件可以直接訪問
father
的資料和函式。如例子:
結果為:
結果為:
為什麼會這樣?這是因為在函式run()
前面加關鍵字
virtual
,表示該函式是有多種形態的,即函式可被多個物件所擁有,而且功能不一。換句話說,多個物件在呼叫同一名字的函式產生的效果也是不一樣的。那麼系統在執行到有關鍵字
virtual
的函式時,就會自動判斷是哪個物件呼叫,然後呼叫該物件的同名函式。
C 虛函式 純虛函式
1 基本概念 虛函式是在基類中使用關鍵字virtual宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。我們想要的是在程式中任意點可以根據所呼叫的物件型別來選擇呼叫的函式,這種操作被稱為動態鏈結,或後期繫結。您可能想要在基類中定義虛函式,以便在派生類中重新定義該函...
C 虛函式 純虛函式
1.析構函式是否應為虛函式問題?2.成員函式的虛函式問題?3.析構函式是否可以為純虛函式問題?說明 僅在使用父類指標指向子類物件時有區別 當析構函式非虛函式時,使用父類指標指向子類物件,在析構時將不會呼叫子類析構函式 當析構函式是虛函式時,使用分類指標指向子類物件,在析構時會呼叫子類析構函式,且呼叫...
C 虛函式 純虛函式
include qdebug class animal void animal animal 即要實現基類animal的animal函式 假如在dog子類中沒有實現animal 函式,則會呼叫基類的animal 函式。即列印 what is the animal 假如在dog子類中實現了animal...