函式過載和虛函式繼承

2021-08-08 02:25:36 字數 688 閱讀 8057

#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...