C 類繼承2 多型公有繼承

2022-05-23 19:12:10 字數 696 閱讀 4532

有時候希望同乙個方法在派生類和基類中的行為是不同的。換句話說,方法的行為取決於呼叫該方法的物件。這種較複雜的行為稱為多型——具有多種形態。即同一種方法其行為隨上下文而異。有兩種重要的機制可用於實現多型公有繼承:

在派生類中重新定義基類的方法。

使用虛方法。

如果要在派生類中重新定義基類的方法,通常應將基類方法宣告為虛的。這樣,程式將根據物件型別而不是引用或指標的型別來選擇方法版本。為基類宣告乙個虛析構函式也是一種慣例。這樣做是為了確保釋放派生物件時,按正確的順序呼叫析構函式。注意virtual只用在宣告中,不能用在定義中。

虛方法的演示:

假設要同時管理brass和brassplus賬戶,如果能使用同乙個陣列來儲存brass和brassplus物件,將很有幫助。這是可能的使用指向brass型別的指標,就能保證這個陣列來表示多種型別的物件,又保證陣列的元素都是同一種型別的。這樣由於使用的是公有繼承模型,因此brass指標既可以指向brass物件,也可以指向brassplus物件。

為何要使用虛析構函式:

如果析構函式不是虛的話,則將只呼叫對應指標型別的析構函式。

虛方法就是給引用或指標呼叫物件時根據物件的型別確定呼叫哪個方法而設計的。不加virtual的話,就會根據引用或指標的型別呼叫方法了,這就容易造成一些問題。

C 多型公有繼承

標籤 空格分隔 c 版本 2本文章僅發布於 作業部落 原 csdn 如果我們希望同乙個方法在基類和派生類中的行為是不同的的時候,我們可以採取一種比較複雜的行為 多型。具有多型性質的物件的行為取決於呼叫物件,即同乙個方法的行為隨上下文而異。為了實現多型c 提供了兩種重要的機制1 無論我們是否使用多型,...

C 類繼承 公有繼承

使用公有繼承,可以達到如下的特性 tabtenn1.h ifndef tabtenn1 h define tabtenn1 h include using std string class tabletennisplayer 基類宣告 void resettable bool v class rat...

C 公有繼承

class base class derived public base派生類宣告時,加上 public 基類名 公有繼承,派生類繼承了成員和介面。也就是說,派生類物件中,有基類的成員。派生類不能直接訪問基類的私有,但是可以訪問基類的公有介面,所以通過基類的公有介面可以間接的訪問基類成員。派生類在宣...