一般的,如果定義乙個指向基類型別的指標,那麼這種型別的指標具有如下特性:
比如基類baseclass擁有函式f,其子類childclass中覆蓋了函式f,那麼如下語句將仍然呼叫a的函式f:
我的理解就是基類生子類,子類再生子類。baseclass *aptr; //基類型別的指標
childclass child;
aptr = &child; //仍可以指向子類物件
aptr->f(); //但仍然呼叫基類的函式f()
例如下面三個類構成乙個繼承鏈:
millimeter繼承自centimeter,centimeter又繼承自meter。
因為兩個子類都覆蓋了setdata函式,這時如果在主函式中執行下面的語句,將導致連鎖的函式呼叫,每個類的中的資料成員都將被賦予相應的值://基類
class meter
float getmeter()
virtual float getdata()
float datasquare()
};//子類
class centimeter:public meter
float getcentimeter()
virtual float getdata()
};//測試多重繼承
class millimeter:public centimeter
float getmillimeter()
virtual float getdata()
};
多繼承的一般宣告為:millimeter mm;
cout << "plesase input the mm:";
float temp;
cin>>temp;
mm.setdata(temp); //導致連鎖的函式呼叫,
class 子類名:繼承修飾符 基類1,繼承修飾符 基類2
比如:
class childclass:public baseclass1,private baseclass2
注意: C 多重繼承與虛基類
多重繼承就是乙個派生類繼承了多個基類。i 通過成員初始化列表指定建構函式 class d public b,public c ii 構造函式呼叫順序 class b void f class c void f class d public b,public c void f int main 輸出 ...
多重繼承 虛繼承與虛基類
一 多重繼承 單重繼承 乙個派生類最多只能有乙個基類 多重繼承 乙個派生類可以有多個基類 class 類名 繼承方式 基類1,繼承方式 基類2,派生類同時繼承多個基類的成員,更好的軟體重用 可能會有大量的二義性,多個基類中可能包含同名變數或函式 多重繼承中解決訪問歧義的方法 基類名 資料成員名 或成...
多重繼承與虛基類
多重繼承 multiple inheritance,mi 虛基類虛基類使得從多個類 它們的基類相同 派生出的物件只繼承乙個基類物件。通過使用關鍵字virtual。例如,可以使worker被用作singer和waiter的虛基類 virtual和public的次序無關緊要 class singer v...