類的繼承和派生

2022-06-01 16:39:32 字數 2871 閱讀 8805

格式:class 派生類名:繼承方式 基類名, 繼承方式 基類名....

繼承形式多種多樣:

繼承會把基類的所有成員均繼承

1.

graph lr

a類-->b

a類-->c

graph lr

a類-->b類

b類-->c類

graph lr

a類-->b類

b類-->c類

a類-->d類

d類-->c類

繼承方式有:public, protected, privated

對於繼承來的基類是把基類所有成員(除開基類的建構函式與析構函式)都繼承了的,僅是對於訪問許可權的不同.一般說來基類的私有成員,派生類是無法直接訪問的,任何繼承方式都是這樣

類的派生:

除開繼承來的東西還加入了直接的特性

類的型別相容

類的型別相容

#includeusing namespace std;

class base1

};class base2:public base1

};class derived:public base2

};void fun(base1 *ptr)

int main()

結果:

建構函式(針對1、2uml型別)

若是都沒寫建構函式就使用預設建構函式

若是寫了帶引數的預設建構函式並且沒寫預設建構函式,那麼在生成派生類的建構函式時需要顯示的進行對他們的構造(具體細節我就不寫了)

注意事項:在預設建構函式的初始化列表裡,可以對類的物件、基類的預設建構函式、派生類的資料成員進行初始化,但不能進行派生類的委託建構函式,委託建構函式要單獨進行

類的建構函式

#includeusing namespace std;

class base1

base1() = default;

};class base2

base2() = default;

};class base3

};class derived :public base2, public base1, public base3

derived(int k) :derived()

derived() = default;

private:

base1 member1;

base2 member2;

base3 memeber3;

int w, h;

};int main()

先按照繼承順序對類進行構造初始化,再按照物件順序對物件進行初始化,圖中第24行的委託建構函式要單獨進行

複製函式

析構函式

派生類析構

解決問題:當派生類從多個基類派生,而這些基類又有共同基類,則在訪問此共同基類中的成員時,將產生冗餘,並有可能因冗餘帶來不一致性

虛基類的宣告:

虛基類的作用:

注意

在第一級繼承時就要將共同基類設計為虛基類

虛基類繼承

#includeusing namespace std;

class base0

};class base1 :virtual public base0 ;

class base2 :virtual public base0 ;

class derived :public base1, public base2

};int main()

虛基類的建構函式

虛基類的構造

#includeusing namespace std;

class base0

int var0;

void fun0()

};class base1 :virtual public base0

int var1;

};class base2 :virtual public base0

int var2;

};class derived :public base1, public base2

int var;

void fun()

};int main()

繼承和派生類

一 基本概念 繼承是物件導向的程式設計的重要特色之一,它可以有效提高軟體的重用性。若在已有類a的基礎上建立了乙個新類b,則稱類b繼承了類a,類a稱為基類或父類,類b稱為派生類或子類。c 中,繼承又分單一繼承和多重繼承。若派生類只有乙個基類,則稱為單一繼承 若派生類的基類多於乙個,則稱為多重繼承。1 ...

C 類的繼承和派生

1.1 繼承 在定義乙個新類b時,如果該類與某個已有的類a相似 指的是b擁有a的全部特點 那麼就可以把a作為乙個基類,把b作為基類的乙個派生類 子類 1.2 派生 2.1 格式 class 派生類名 public 基類名 2.2 例項 class chuman class b public a in...

類的繼承派生

一 什麼是繼承 i 繼承是一種建立新類的方式,新建的類可稱為子類或派生類,父類又可稱為基類或超類,子類會遺傳父類的屬性 ii 需要注意的是 python支援多繼承 在python中,新建的類可以繼承乙個或多個父類 class parent1 object 父類 x 1111 class parent...