基類和派生類
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成員在子類中依然存在,但是卻無法訪問到...