C 繼承和派生

2021-08-22 02:27:57 字數 2268 閱讀 8244

1 繼承概念

1)繼承是類之間定義的一種重要關係;

2)基本語法:class child : public parent1,public parent2;

3)parent稱基類(父類),child稱派生類(子類)

4) 繼承方式:public,private,protected.

5)重要說明:

a)子類擁有父類的所有成員變數和成員函式;

b)子類可以擁有父類沒有的方法和屬性;

c)子類就是一種特殊的父類;

d)子類物件可以當作父類物件使用, 即可以使用父類的成員變數和成員函式;

2 子類的訪問控制

1)子類繼承了基類的全部成員變數和成員方法(除了構造和析構),但是這些成員的訪問屬性,在派生過程中是可以調整的。

2)不同的繼承方式會改變繼承成員的訪問屬性

a) public繼承:父類成員在子類中保持原有訪問級別

b) private繼承:父類成員在子類中變為private成員

c) protected繼承:父類中public成員會變成protected,父類中protected成員仍然為protected,父類中private成員仍然為private。

3)「三看」原則

a)看呼叫語句,這句話寫在子類的內部、外部;

b)看子類如何從父類繼承(public、private、protected)

c)看父類中的訪問級別(public、private、protected)

4)訪問級別設定的原則

a)需要被外界訪問的成員直接設定為public

b)能在當前類中訪問的成員設定為private

c)只能在當前類和子類中訪問的成員設定為protected,protected成員的訪問許可權介於public和private之間。

3 繼承中的構造和析構

1)型別相容性原則

a)指在需要基類物件的任何地方,都可以使用公有派生類(子類)的物件來替代。

b)子類物件可以當作父類物件使用;

c) 子類物件可以直接賦值給父類物件

d) 子類物件可以直接初始化父類物件

e)父類指標可以直接指向子類物件

f)父類引用可以直接引用子類物件

#include #include using namespace std; 

class parent03

void printp()

void printc()

int main()

2)構造和析構呼叫原則

a) 子類物件在建立時會首先呼叫父類的建構函式

b) 父類建構函式執行結束後,執行子類的建構函式;

c) 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫父類建構函式;

d) 析構函式呼叫的先後順序與建構函式相反;

#include using namespace std;

class parent

;class parent : public object

void howtoprint2(parent &base)

void main()

//函式呼叫

howtoprint(&p1);

howtoprint(&c1);

howtoprint2(p1);

howtoprint2(c1);

cout<<"hello..."<五 虛繼承虛繼承解決的是多個父類有共同祖先的問題,可以防止出現二義性。

1 如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生二義性。

2 如果在多條繼承路徑上有乙個公共的基類,那麼在繼承路徑的某處匯合點,這個公共基類就會在派生類的物件中產生多個基類子物件。

3 要使這個公共基類在派生類中只產生乙個子物件,必須對這個基類宣告為虛繼承,使這個基類成為虛基類。

4 虛繼承宣告使用關鍵字 virtual

#include using namespace std;

class b

;class b1 : virtual public b

;class b2 : virtual public b

;class c : public b1, public b2

;void main()

c 繼承和派生

通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...

C 繼承和派生

在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...

C 繼承和派生

二.派生類的建構函式和析構函式 繼承,就是從先輩處得到屬性和行為的特徵。類的繼承就是新的類從已有的類那裡得到已有的特性。從另乙個角度來看問題,從已有類產生新類的過程就是類的派生。基類和派生類的關係,可以表述為 派生類是基類的具體化,而基類是派生類的抽象。格式為 class 派生類名 繼承方式 基類 ...