一、什麼是繼承
繼承是指乙個類可以繼承另乙個類內的內容
作用:提高**的復用性
書寫格式
class test : public testbase
;
其中testbase表示基類(父類),test表示派生類(子類),public表示繼承方式
在繼承中有三種繼承方式,分別為
子類中繼承來的元素具有哪些許可權是取決於父類成員變數的許可權和繼承方式的較小值
例如:
class
testbase
;class
test
:public testbase
;
此時父類的中的成員變數是protected ,繼承方式為 public 在繼承方外界訪問中的許可權均為protected ,可繼承,不可訪問
若父類的許可權為private ,無論為哪種繼承方式,均不可見
下面以直觀的圖表進行總結
二、隱藏
1、當父類成員變數或成員函式和子類的成員變數或成員函式重名時,就會出現隱藏,是將父類中的內容隱藏,只顯示子類的內容
所以盡量不要定義子類與父類的成員變數或成員函式重名(成員函式只要函式名相同(與引數列表無關),就會出現隱藏)
2、當然出現隱藏,只是將父類的內容藏起來,實際上還是存在的,可以通過 父類類名::成員變數名 的方式進行檢視父類中被隱藏的內容
3、子類的作用範圍比父類的作用範圍大,所以可以將子類指標強轉為父類指標,而父類指標不能強轉為子類指標
test *pt =
newtest(5
,6);
testbase *ptb = pt;
在c語言中()用來進行強制型別轉換,在這裡也可以用()將父類指標強制轉換為子類指標,但是會出現越界訪問的問題,所以不推薦這樣的強制型別轉換
綜上,不要定義與父類成員相同名字的子類,就可以避免這個問題了
三、6大預設成員函式
對於預設成員函式的呼叫順序問題
下面用**來展示他們的呼叫過程
#include
using
namespace std;
class
testbase
~testbase()
};class
test
:public testbase
~test()
void
fun()}
;int
main2()
執行結果為
四、友元
友元不能被繼承
五、靜態成員
在類內定義靜態成員變數,需要在類外給靜態成員變數賦初值
在基類內定義乙個靜態成員變數,無論派生出多少個派生類,只有乙個static成員例項,而且在任何地方修改它的值,他都會改變。
C 繼承總結
繼承是物件導向程式設計中軟體重用的關鍵技術。繼承機制使用已定義的類作為基礎建立新的類定義,新的類是原有類的資料及操作與新類所增加的資料及操作的組合。新的類把原有的類作為基類引用,而不需要修改原有類的定義。新的類作為派生類引用。這種可擴充 可重用技術大大降低了大型軟體的開發難度。c 中描述類繼承關係的...
C 繼承總結
一 基類和派生類 類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式說明 其中,基類名錶 的語句格式如下 訪問控制 基類名1,訪問控制 基類名2,訪問控制 是表示繼承許可權的關鍵字,稱為訪問描述符。可以是 如果省略訪問描述符,則c 認為是私有繼承。如果用關鍵字struct 而不...
C 繼承總結
繼承概念 在原有的類不變的基礎之上,新增一些函式,對功能進行拓展 繼承特點 是物件導向程式設計的的層次結構 是實現由簡單到複雜的認知過程 基類 被繼承的類 派生類 在繼承之後產生的新類 例子 手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增 繼承格式 派生類名 繼承許...