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