c (基類指標 多重繼承與多繼承)

2021-09-20 10:28:46 字數 1185 閱讀 1224

一般的,如果定義乙個指向基類型別的指標,那麼這種型別的指標具有如下特性:

比如基類baseclass擁有函式f,其子類childclass中覆蓋了函式f,那麼如下語句將仍然呼叫a的函式f:

baseclass *aptr;    //基類型別的指標

childclass child;

aptr = &child; //仍可以指向子類物件

aptr->f(); //但仍然呼叫基類的函式f()

我的理解就是基類生子類,子類再生子類。

例如下面三個類構成乙個繼承鏈:

millimeter繼承自centimeter,centimeter又繼承自meter。

//基類

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()

};

因為兩個子類都覆蓋了setdata函式,這時如果在主函式中執行下面的語句,將導致連鎖的函式呼叫,每個類的中的資料成員都將被賦予相應的值:

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...