C 學習 繼承

2021-07-06 01:50:00 字數 1347 閱讀 1127

基類和派生類

class cderived:public cbase}基類

派生類public繼承

public成員

public處理

protected成員

protected處理

private成員

不可訪問

protected繼承

public成員

protected處理

protected成員

protected處理

private成員

不可訪問

private繼承

public成員

private處理

protected成員

private處理

private成員

不可訪問

虛函式與多型

靜態結合

cbase *p;

cbase dt1();

cderived dt2();

p=&dt2;

p->disp();

此時呼叫的是基類的disp()

虛函式在定義cbase時這樣定義

virtual void disp();

這時p->disp()呼叫的就是派生類的disp()了

必須與基類的虛函式有相同的函式名,相同的形參個數及型別,相同的返回值

純虛函式和抽象類

只做基類來使用基類的函式實體不會被使用,可以把函式體省略(純虛函式),必須在派生類中給出定義

virtual void disp()=0;

兩個同基類的派生類不能自由地相互轉換,需要強制轉換

cderiveda dt1();

cderivedb dt2();

cderiveda *p;

p=(cderiveda *)&dt2;

純虛函式不能在外面定義基類了(在派生類中建構函式可以)

繼承的種類

多重繼承

class cmids():cmint(),cmdbl()

}//呼叫需要基類的域

多重基類和虛擬基類

虛擬基類是定義派生類時,在基類名前使用virtual

class base_a{};

class base_b:virtual public base_a{};

class base_c:virtual public base_a{};

class base_d:public base_b,public base_c{};

這樣所生成的派生類base_d中只包含乙個base_a物件而不是兩個。

繼承方式下的構造與析構

基類——>資料成員——>構造

析構——>資料成員——>基類

C 學習 繼承

物件導向程式設計中最重要的乙個概念是繼承。繼承允許我們依據另乙個類來定義乙個類,這使得建立和維護乙個應用程式變得更容易。這樣做,也達到了重用 功能和提高執行效率的效果。當建立乙個類時,您不需要重新編寫新的資料成員和成員函式,只需指定新建的類繼承了乙個已有的類的成員即可。這個已有的類稱為基類,新建的類...

C 繼承學習筆記

派生類從基類繼承了保護 protected 成員和公有 public 成員函式,但是繼承不了基類的過載建構函式。定義乙個如下基類 class counter counter operator counter n void reset int getcount int getnum counter c...

C 學習筆記 繼承

一 c 中的繼承方式會影響子類的對外訪問屬性 public 修飾的成員變數 方法 在類的內部 類的外部都能使用 protected 修飾的成員變數方法,在類的內部使用,在繼承的子類中可用 private 修飾的成員變數方法,只能在類的內部使用 二 private成員在子類中依然存在,但是卻無法訪問到...