#include
class cbase
void g(float x)
};class cberived :public cbase
void g(float x)
};void main()
輸出結果
cberived : f 函式列印:整數 3
cberived : g 函式列印:浮點小數 6.000000
cberived : f 函式列印:整數 3
cbase: g 函式列印:浮點小數6.000000
派生類過載基類的函式f和g,因此派生類呼叫f和g,實際就是呼叫派生類的函式f和g。
因為在基類cbase的函式f為virtual函式,而派生類cderived又過載了該函式;所以f函式被覆蓋掉,即cbase函式實際是cderived::f和cbase::g。
乙個函式一經宣告為virtual函式,它在派生類眾的過載函式也是virtual函式,不必再用virtual修飾;
虛函式的宣告之後加上「=0」,函式即為純虛函式。乙個類包含純虛函式,該類函式成為抽象類。
virtual 函式返回值型別 函式名(引數列表) = 0;
抽象類不能建立物件,作為派生類的介面規範,要求派生類必須提供乙個純虛函式的具體實現,否則產生編譯錯誤。 虛繼承和虛函式繼承
虛繼承主要用於菱形 形式的繼承形式 虛繼承是為了在多繼承的時候避免引發歧義,比如類 有個就是a,繼承了 c也繼承了 當 多繼承 時,就會有歧義產生了,所以要使用虛擬繼承避免重複拷貝。虛函式繼承是解決多型性的,當用基類指標指向派生類物件的時候,基類指標呼叫虛函式的時候會自動呼叫派生類的虛函式,這就是多...
虛函式和過載
面試必考。1 include 2 class cbase39 10void g float x 11 14 1516 繼承類 cderived 17class cderived public cbase 1824 public 25 26void g float x 27 30 3132 33voi...
繼承和虛函式
摘要 本文從5段 例項出發,通過類中類的普通繼承,類的虛繼承,類的多重繼承,多個虛函式類的普通繼承 虛繼承與多重繼承,幾個交叉概念,詳細的闡釋了繼承 虛函式與虛繼承的基本概念,深入剖析了繼承於虛繼承的區別於聯絡。exp.001 虛繼承 cpp view plain copy include clas...