C 複習要點總結之八 繼承一

2021-07-10 20:09:02 字數 2129 閱讀 4590

一  不同的繼承方式會改變繼承成員的訪問屬性

public 修飾的成員變數、方法 在類的內部和外部都可以使用。

protected 修飾的成員變數、方法在類的內部使用,在繼承的子類中使用,類的外部不能使用。(是為了在家族中使用,為了得到繼承!)

private 修飾的成員變數、方法 只能在類的內部使用,不能在類的外部使用

1)c++中的繼承方式會影響子類的對外訪問屬性

public繼承:父類成員在子類中保持原有訪問級別

private繼承:父類成員在子類中變為private成員

protected繼承:父類中public成員會變成protected

父類中protected成員仍然為protected

父類中private成員仍然為private

2)private成員在子類中依然存在,但是卻無法訪問到。不論種方式繼承基類,派生類都不能直接使用基類的私有成員。

3)c++中子類對外訪問屬性表

父類成員訪問級別繼承

方式public(繼承方式)

proteced(繼承方式)

private(繼承方式)

public

public

proteced

private

proteced

proteced

proteced

private

private

private

private

private

三看原則:

c++中的繼承方式(public、private、protected)會影響子類的對外訪問屬性     

判斷某一句話,能否被訪問

1)看呼叫語句,這句話寫在子類的內部、外部

2)看子類如何從父類繼承(public、private、protected)     

3)看父類中的訪問級別(public、private、protected)

思考:如何恰當的使用public,protected和private為成員宣告訪問級別?

1、需要被外界訪問的成員直接設定為public

2、只能在當前類中訪問的成員設定為private

3、只能在當前類和子類中訪問的成員設定為protected,protected成員的訪問許可權介於public和private之間。

型別相容規則是指在需要基類物件的任何地方,都可以使用公有派生類的物件來替代。通過公有繼承,派生類得到了基類中除建構函式、析構函式之外的所有成員。這樣,公有派生類實際就具備了基類的所有功能,凡是基類能解決的問題,公有派生類都可以解決。型別相容規則中所指的替代包括以下情況:

子類物件可以當作父類物件使用

子類物件可以直接賦值給父類物件

子類物件可以直接初始化父類物件

父類指標可以直接指向子類物件

父類引用可以直接引用子類物件

在替代之後,派生類物件就可以作為基類的物件使用,但是只能使用從基類繼承的成員。

型別相容規則是多型性的重要基礎之一。

第一層含義:

1-1 基類指標(引用)指向子類物件

parent  *p = null;

p = &c1;

p->printp();

1-2 指標做函式引數

howtoprint(&p1);

howtoprint(&c1);

1-3引用做函式引數

howtoprint2(p1);

howtoprint2(c1);

第二層含義

可以讓父類物件,初始化子類物件

parent p3 = c1;

三 繼承中的物件模型

問題:如何初始化父類成員?父類與子類的建構函式有什麼關係

在子類物件構造時,需要呼叫父類建構函式對其繼承得來的成員進行初始化

在子類物件析構時,需要呼叫父類析構函式對其繼承得來的成員進行清理

1、子類物件在建立時會首先呼叫父類的建構函式

2、父類建構函式執行結束後,執行子類的建構函式

3、當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫

4、析構函式呼叫的先後順序與建構函式相反

c 複習要點總結之九 繼承二

一 繼承中的同名成員變數處理方法 1 當子類成員變數與父類成員變數同名時 2 子類依然從父類繼承同名成員 3 在子類中通過作用域分辨符 進行同名成員區分 在派生類中使用基類的同名成員,顯式地使用類名限定符 4 同名成員儲存在記憶體中的不同位置 繼承和static關鍵字在一起會產生什麼現象哪?理論知識...

c 複習要點總結z之十二 STL string

1string概念 string是stl的字串型別,通常用來表示字串。而在使用string之前,字串通常是用char 表示的。string與char 都可以用來表示字串,那麼二者有什麼區別呢。string和char 的比較 string是乙個類,char 是乙個指向字元的指標。string封裝了ch...

C 複習要點總結之 友元

在c 中,類的成員訪問許可權有三種,private,protected,public。private 類中的private成員只能夠在本類中或者友元訪問,子類或外界無法訪問私有成員。protected 類中的protected成員只允許本類或者子類中訪問,外界無法訪問,定義類時如果希望成員被子類繼承...