C 多型以及其注意事項

2021-07-13 15:12:19 字數 658 閱讀 1236

1、虛函式、覆蓋以及多型的概念

1)class 基類

};的成員函式,稱為虛函式或方法。

2)覆蓋

如果子類的成員函式和基類的虛函式具有「相同」的函式原型,那麼該成員函式就也是虛函式,無論其是否帶有virtual關鍵字,且對基類中的虛函式構成覆蓋。

class 子類 : public 基類

3)多型

如果子類提供了對基類虛函式的有效覆蓋,那麼通過乙個指向子類物件的基類指標,或者引用子類物件的基類引用,呼叫該虛函式,實際被呼叫的將是子類中的覆蓋版本,而非基類中的原始版本,這種語法現象謂之多型。

4)覆蓋的條件

a.必須是非靜態的成員函式,但是建構函式除外;

b.必須在基類中用virtual關鍵字宣告其為虛函式;

c.子類中的覆蓋版本和基類中的原始版本,函式原型(返回型別+函式名+形參表+常屬性)必須「相同」;

d.如果基類中的虛函式返回的是某個類型別的指標或者引用,那麼該虛函式在子類中的覆蓋版本,也可以返回基類版本所返回的指標或者引用的型別的子類的指標或者

引用————型別協變

e.覆蓋的條件與訪問控制屬性無關。

5)多型的條件

a.虛函式和有效覆蓋

b.通過指標或者引用呼叫虛函式

c.在基類的構造和析構函式中呼叫虛函式,沒有多型性

多型注意事項

即同一方法可以根據傳送物件的不同而採用多種不同的行為方式 乙個物件的實際型別是確定的,但是可以指向物件的引用型別有很多 多型注意事項 多型是方法的多型,屬性沒有多型 父類和子類,有聯絡 否則會報錯 型別轉換異常!classcastexception 存在條件 繼承關係,方法需要重寫,父類引用子類物件...

獲取系統Temp,以及其注意事項。

今天忙了一上午,都乙個問題搞得莫名其妙,其實,只要真正的理解了,也就是個很小的問題。我們獲取系統的temp gettemppath max path,g strtempdir.getbuffersetlength max path 得到的系統temp路徑 g strtempdir是乙個短的路徑。當然...

使用多型的注意事項

多型是使用虛函式實現的,虛函式用於繼承結構層次的父類與子類中,除了基類與子類的函式名必須相同外,連引數型別 個數和順序都要相同,也就是說,父類和子類的虛函式不能只是名字過載,而是其宣告要一模一樣。否則,儘管標記virtual,也不能發生多型。一種例外的情形,返回型別例外。void fn int in...