C++編程語言的應用范圍比較廣泛,能夠以一種簡單靈活的方式幫助開發人員實現許多功能。在C++類繼承中,一個派生類可以從一個基類派生,也可以從多個基類派生。 從一個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。
例:單繼承的定義
- class B:public
- {
- < 派生類新定義成員>
- };
- 多繼承的定義
- class C:public A,private B
- {
- < 派生類新定義成員>
- };
注:如果在基類前不寫訪問控制符,則默認為私有的
派生類共有三種C++類繼承方式:公有繼承public),私有繼承private),保護繼承protected)
公有繼承public)
基類的公有成員和保護成員可以作為其派生類的公有成員和保護成員
派生類的成員函數可以訪問基類中的公有成員和保護成員,無法訪問基類中的私有成員
派生類的對象可以訪問基類的公有成員
私有繼承private)
基類的公有成員和保護成員都作為其派生類的私有成員
在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承
保護C++類繼承protected)
基類的所有公有成員和保護成員都成為派生類的保護成員
基類的公有成員和保護成員只能被它的直接派生類成員函數或友元訪問
構造函數和析構函數不能被繼承
因此構造派生類的對象時,需要對基類數據成員.新增數據成員和成員對象的數據成員進行初始化
派生類構造函數的參數表部分既需要包含子類某些數據成員的初始值,也要包含基類的數據成員的初始值
如果基類沒有默認的構造函數,那麼派生類必須具有給基類構造函數提供參數的構造函數
派生類構造函數一般語法如下:
- 派生類名::派生類名(參數總表)
- :基類名1(參數表1),...,基類名n(參數表n)
- {
- 初始化語句
- }
當基類有多個構造函數時,編譯器根據派生類構造函數為基類構造函數提供的參數初始化列表中的參數類型來確定調用哪個構造函數
派生類的析構函數應當首先對派生類新增普通成員進行清理
然後對派生類新增的對象成員進行清理
最後是對所有從C++類繼承來的成員進行清理