c 學習筆記五 多型

2021-10-03 02:26:20 字數 1858 閱讀 3682

示例二:

示例:

#include using namespace std;

class father

father()

virtual ~father() //將父類析構函式定義為虛函式,析構

//的時候會自動也呼叫子類的析構函式

};class son:public father

son()

~son()

};int main()

執行結果:

//覆蓋的一種特殊情況

//如果覆蓋函式型別是由繼承關係的指標/引用型別,雖然返回值不同,但也屬於覆蓋關係

//其他情況下,返回值不同,則不滿足覆蓋的要求

示例一:

#include using namespace std;

class base

};class derive : public base

};int main()

示例二:

#include using namespace std;

class base

};class b:public a

};class c:public b //由於是覆蓋函式,本身就屬於虛函式,所以這裡

}; //的關鍵字virtual可有可無

int main()

這個例項中a類中的func()不是虛函式,所以不滿足覆蓋的第乙個條件(第二判斷物件指標是否指向子類,第三判斷是子類中是否重寫虛函式),所以這裡直接呼叫a中的func()函式

C 複習筆記(五) 多型

多型,可分為靜態多型和動態多型。靜態多型,就是表現在靜態聯編上,即編譯時的多型,如汎型程式設計,函式過載都屬於靜態聯編。動態多型,就是表現在執行時的多型,在程式執行時,才決定呼叫什麼函式,通過虛函式來實現,換句話說,就是實現 乙個介面,多種方法 本文的多型主要指動態多型。多型實現條件 實現條件有3個...

C 學習筆記 多型

引言 1.虛繼承 如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生二義性。解決方案 虛繼承宣告,加乙個virtual 關鍵字 2.物件導向新需求 編譯器的做法不是我們期望的 如果用父類指標指向子類物件,再呼叫print 方法,均會呼叫父類中的p...

C 多型學習筆記

看了一堆介紹多型的東西,腦子裡就記得幾個概念了。靜態多型,又叫早繫結,動態多型,應該是叫晚繫結。多型的價值在於使程式更簡潔 更高效。no virtual no 多型,virtual means 已多型。不要覺得問題 很沒用 你還就是說不出來。同樣的命令,不同的物件,做出不同的動作。這就得借助the ...