C 類的繼承

2021-10-07 22:56:03 字數 3388 閱讀 2755

下面是我定義類:

class

father

void

fun_father()

~father()

};class

father1

:public father

void

fun_father1()

~father1()

};class

son:

public father1

void

fun_son()

~son()

};

這個是他們三者之間的關係:

下面進行測試:

1.建立father物件

//1.建立father類的物件

father *a=

newfather()

;

結果為:(只呼叫了father類的建構函式)

2.建立father1物件

//2.建立father1類的物件

father *a=

newfather1()

;

結果為:(先呼叫father類的建構函式,再呼叫father1類的建構函式)

3.建立son物件

//3.建立son類的物件

father *a=

newson()

;

結果為:(先呼叫father類的建構函式,再呼叫father1類的建構函式,最後再呼叫son的建構函式)

1.建立father物件

//1.建立father類的物件

father1 *a=

newfather()

;

結果:報錯,派生類指標無法建立基類物件

2.建立father1物件

//2.建立father1類的物件

father1 *a=

newfather1()

;

結果:先呼叫father類的建構函式,再呼叫father1類的建構函式

3.建立son物件

//3.建立son類的物件

father1 *a=

newson()

;

結果:先呼叫father類的建構函式,再呼叫father1類的建構函式,最後再呼叫son的建構函式

總結:

用指標例項化乙個物件的時候,構造函式呼叫的循序和指標的型別無關,只與要建立的物件有關,並且會從最上層的基類的建構函式開始一層一層往下呼叫,直到呼叫了你要建立的那個物件的建構函式。

基類的指標可以建立出派生類的物件,但是派生類的指標無法建立出基類的物件

1.delete 建立father物件的father指標

father *a=

newfather()

;delete a;

結果:呼叫了father類的析構函式

2.delete 建立father1物件的father指標

father *a=

newfather1()

;delete a;

結果:還是呼叫了father類的析構函式

3.delete 建立son物件的father指標

father *a=

newson()

;delete a;

結果:還是呼叫了father類的析構函式

1.delete 建立father1物件的father1指標

father1 *a=

newfather1()

;delete a;

結果:先呼叫了father1的析構函式,再呼叫了father的析構函式

2.delete 建立son物件的father1指標

father1 *a=

newson()

;delete a;

結果:先呼叫了father1類的析構函式,在呼叫了father的析構函式

1.delete 建立son物件的son指標

son *a=

newson()

;delete a;

結果:先呼叫了son的析構函式,再呼叫了father1的析構函式,最後呼叫了father的析構函式

總結:

析構函式的呼叫只與指標的型別有關new出來的物件無關,並且是由派生類一層一層往上析構的,直到最開始的基類被析構掉。

只能訪問到father類裡面的方法

能訪問到father1和father的方法

能訪問到father,father1和son三個的方法

總結:

訪問許可權也是只和指標型別有關的,與建立的物件無關,並且派生類可以訪問到整條繼承鏈條之前的全部方法

C 類的繼承

繼承是物件導向程式設計的主要特徵之一,它可以讓你重用 可以節省程式設計的時間。1.object類的作用。object object為別名 是所有類的基類,在c 中所有的類都直接或間接繼承於object,如果在乙個類的宣告中沒有指定它繼承於哪個類則是繼承於object類。2.類繼承的實現。以下定義兩個...

C 類的繼承

複習下c 類的繼承,先看下面例子 class a public可以在類內部 派生類 類的例項訪問 protected void test2 protected可以在類內部 派生類訪問 private int m a m a為private,只能在本類使用 class b public a class...

c 類的繼承

類的繼承有三種方式 1 公有繼承 2 私有繼承3 保護繼承 基類中的私有成員在派生類中時隱藏的,只能在基類中訪問 派生類中的成員不能訪問基類中的私有成員,但是可以訪問基類中的公有成員和保護成員。派生類從基類公有繼承時,基類的公有成員和保護成員仍然是派生類中的公有成員和保護成員 私有繼承時,公有成員和...