c 之繼承(四)

2021-08-20 23:29:18 字數 3902 閱讀 7422

一、派生類訪問靜態成員

1、基類定義的靜態成員,將被所有派生類共享(基類和派生類共享基類中的靜態成員)

2、根據靜態成員自身的訪問特性和派生類的繼承方式,在類層次體系中具有不同的訪問性質

3、派生類中訪問靜態成員結構:

類名 :: 成員

或通過物件訪問  物件名 . 成員

二、基類的初始化

1、在建立派生類物件時用指定引數呼叫基類的建構函式來初始化派生類繼承基類的資料

2、派生類建構函式結構:

派生類建構函式( 變元表) : 基類 ( 變元表 ) , 物件成員1( 變元表)

… 物件成員n ( 變元表 ) ;

3、建構函式執行順序:基類 à 物件成員à 派生類

4、舉例

呼叫建構函式順序測試,建構函式無引數

#include

using namespace std ;

class base

} ;

class d_class : public  base

} ;

int main ( )

#include

using namespace std ;

class parent_class

int  inc1 ()

int  inc2 ()

void  display  ()

};

class derived_class : private parent_class

int inc1 ( )

int  inc3 ( )

void  display ( )

} ;

int main ( )

三、派生類建構函式和析構函式的定義規則

派生類建構函式和析構函式的使用原則

基類的建構函式和析構函式不能被繼承如果基類沒有定義建構函式或有無參的建構函式, 派生類也可以不用定義建構函式如果基類無無參的建構函式,派生類必須定義建構函式如果派生類的基類也是派生類,則每個派生類只負責直接基類的構造派生類是否定義析構函式與所屬的基類無關

6、結構

派生類::派生類名(引數總表):基類名(參數列)

ps:這是基類有建構函式且含有引數時使用

四、派生類析構函式

(1)當派生類中不含物件成員時

1、在建立派生類物件時,建構函式的執行順序是:基類的建構函式→派生類的建構函式;

2、在撤消派生類物件時,析構函式的執行順序是:派生類的析構函式→基類的析構函式。

(2)當派生類中含有物件成員時

1、在定義派生類物件時,建構函式的執行順序:基類的建構函式→物件成員的建構函式→派生類的建構函式;

2、在撤消派生類物件時,析構函式的執行順序:派生類的析構函式→物件成員的析構函式→基類的析構函式。

(3)舉例

#include

class base ;

class subs:public base ;

void main()

五、多繼承的派生類構造和訪問

1、多個基類的派生類建構函式可以用初始式呼叫基類建構函式初始化資料成員。

2、執行順序與單繼承建構函式情況類似。多個直接基類建構函式執行順序取決於定義派生類時指定的各個繼承基類的順序。

3、 乙個派生類物件擁有多個直接或間接基類的成員。不同名成員訪問不會出現二義性。如果不同的基類有同名成員,派生類物件訪問時應該加以識別。

4、結構

派生類名(引數總表):基類名1(參數列1),基類名2(參數列2),…,基類名n(參數列n)

5、舉例

class base1

int getdata() const

protected:

int value;

};

class base2

char getdata() const

protected:

char letter;

};

class derived : public base1, publicbase2

;

六、多繼承方式下建構函式的執行順序

1、先執行所有基類的建構函式,再執行物件成員的建構函式,最後執行派生類的建構函式

2、處於同一層次的各基類建構函式的執行順序取決於定義派生類時所指定的基類順序

與派生類建構函式中所定義的成員初始化列表順序沒有關係。

3、內嵌物件成員的建構函式執行順序與物件在派生類中宣告的順序一致

C 基礎(四)繼承

類的繼承 類的繼承分三種方式 公有 私有 保護,若不明確指出預設私有繼承 類的繼承主要幹三件事情 接收基類成員,改造基類成員,新增新的成員 關於接收基類成員 接收基類所有的資料成員,接收基類所有的函式成員,除了建構函式,析構函式,為什麼呢?前面說過 構造,析構函式都是給編譯器看的,編譯器本身可以看到...

C 繼承之繼承基礎

一 繼承的相關概念 繼承是 種復 段,在繼承關係 子類繼承父類的成員,由此達到復 的 的。通過繼承定義乙個類,繼承是型別之間的關係建模,共享公有的東西,實現各自本質不同的東西。二 三種訪問限定符 繼承關係 三 繼承的重要說明1.子類擁有父類的所有成員變數和成員函式 2.子類就是一種特殊的父類 3.子...

C 繼承之成員繼承

一 子類繼承父類哪些成員?1.繼承的效果 子類繼承父類,也就意味著在子類中可以訪問到父類中定義的成員。那麼在父類中定義的成員 字段,屬性,方法 哪些在子類中可以訪問到,哪些訪問不到那?2.欄位 字段可以使用 private 和 public 進行修飾,但 80 的時候使用 private 修飾。pr...