格式: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型別)
若是都沒寫建構函式就使用預設建構函式
若是寫了帶引數的預設建構函式並且沒寫預設建構函式,那麼在生成派生類的建構函式時需要顯示的進行對他們的構造(具體細節我就不寫了)
注意事項:在預設建構函式的初始化列表裡,可以對類的物件、基類的預設建構函式、派生類的資料成員進行初始化,但不能進行派生類的委託建構函式,委託建構函式要單獨進行
類的建構函式
先按照繼承順序對類進行構造初始化,再按照物件順序對物件進行初始化,圖中第24行的委託建構函式要單獨進行#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()
複製函式
析構函式
派生類析構
解決問題:當派生類從多個基類派生,而這些基類又有共同基類,則在訪問此共同基類中的成員時,將產生冗餘,並有可能因冗餘帶來不一致性
虛基類的宣告:
虛基類的作用:
注意:
在第一級繼承時就要將共同基類設計為虛基類
虛基類繼承
虛基類的建構函式#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...