示例二:
示例:
#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 ...