為了解決從不同途徑繼承來的同名的數據成員在內存中有不同的拷貝造成數據不一致問題,將共同基類設置為虛基類。這時從不同的路徑繼承過來的同名數據成員在內存中就只有一個拷貝,同一個函數名也只有一個映射。這樣不僅就解決了二義性問題,也節省了內存,避免了數據不一致的問題。 class 派生類名:virtual 繼承方式 基類名 virtual是關鍵字,聲明該基類為派生類的虛基類。 在多繼承情況下,虛基類關鍵字的作用范圍和繼承方式關鍵字相同,只對緊跟其后的基類起作用。 聲明了虛基類之后,虛基類在進一步派生過程中始終和派生類一起,維護同一個基類子對象的拷貝
#include<iostream>using namespace std;int gFlag = 0;class Base{public: Base() { cout << "Base called : " << gFlag++ << endl; } void PRint() { cout << "Base print" << endl; }};class Mid1 : virtual public Base{public: Mid1() { cout << "Mid1 called" << endl; }};class Mid2 : virtual public Base{public: Mid2() { cout << "Mid2 called" << endl; }};class Child :public Mid1, public Mid2{public: Child() { cout << "Child called" << endl; }};int main(){ Child d; d.print();}新聞熱點
疑難解答
圖片精選