C (day 1) 繼承 基類與派生類

2021-10-05 10:29:02 字數 1612 閱讀 3104

4. 派生類的構造

5. 型別相容性

從乙個類派生出另乙個類,原先的類稱為基類,繼承類稱為派生類。
派生類的定義方式:

class 派生類類名: 訪問許可權修飾符 基類類名1

, 訪問許可權修飾符 基類類名2,.

..

例子:

class

base1

;class

base2

;class

derived

:public base1,

protected base2

;

基類中的成員函式可以訪問基類的所有成員,但不能訪問派生類的成員。

基類的物件只能訪問基類的公有資料成員和呼叫基類的公有成員函式,基類物件不能訪問派生類的成員。

派生類中的成員函式可以訪問派生類的所有成員,也可以訪問其基類的公有成員和受保護成員。

派生類的物件能訪問派生類的共有資料成員和呼叫派生類的公有資料成員,公有繼承的派生類物件還能夠訪問其基類的公有成員。

用公有繼承的派生類物件名呼叫成員函式:

構造乙個派生類包括以下3部分工作:

1)從基類接受成員

派生類把基類全部的成員(不包括建構函式和析構函式)接收過來,也就是說是沒有選擇的,不能選擇接受其中一部分成員,而捨棄另一部分成員。

要求我們根據派生類的需要慎重選擇基類,使冗餘量最小。事實上,有些類是專門作為基類而設計的,在設計時充分考慮到派生類的要求。

2)調整從基類接收的成員

接收基類成員是程式人員不能選擇的,但是程式人員可以對這些成員作某些調整。

3)在宣告派生類時增加的成員

這部分內容時很重要的,它體現了派生類對基類功能的擴充套件。

此外,在宣告派生類時,一般還應當自己定義派生類的建構函式和析構函式,因為建構函式和析構函式是不能從基類繼承來的。

1. 派生類物件的成員組成:

-從基類繼承過來的繼承成員

-新加入的成員

2. 派生類建構函式構成:

-呼叫基類建構函式,對繼承成員進行初始化

-按常規方法對新加入的資料成員初始化

3. 派生類建構函式的執行:

-先呼叫基類的建構函式對繼承成員進行初始化

-再執行對新加成員初始化的部分。

4.若基類建構函式帶有引數,定義派生類建構函式時必須在初始化列表中顯示呼叫基類建構函式,並用在派生類建構函式的形參部分為基類建構函式提供實參。

-即便派生類本身的建構函式不帶引數也必須在冒號後呼叫基類的建構函式,但這是傳遞給基類建構函式的實參通常時一些常量表示式。

5.若基類建構函式不帶引數,定義派生類建構函式時,可以不必顯示的呼叫基類建構函式(c++編譯程式認為已自動呼叫了基類中形式引數列表為空的建構函式。無引數的建構函式可以是c++程式自動產生的,也可以是程式設計師自己宣告/定義的)。

派生類建構函式一般的定義格式為:

派生類名::派生類名(基類所需形參,派生類成員所需形參,物件成員形參):基類名(基類的引數),《物件成員名》(物件成員的引數)

繼承 基類和派生類

說明派生類的生成和使用 include using namespace std class test1 基類 test1 int a x a void disp class test2 public test1 派生類 test2 int a,int b test1 a void disp intm...

基類與派生類

初學c 的時候,很多人都很頭疼各種訪問標號下基類與派生類的關係,其實,死記硬背肯定不是乙個好的辦法,要知道它們之間的關係,先要分析一下訪問標號是如何產生的 在沒有繼承之前,類的只有兩類使用者 類本身和類的使用者。把類成員通過public和private劃分恰好體現了這一分割 類的使用者只能訪問類的p...

C 隨筆 類繼承 派生類與基類

1 派生類會繼承基類的資料成員和部分方法成員,並將其加入派生類的相應區域 public private protected,取決於才去的繼承方式 之所以是部分方法成員,是因為有一些特殊的函式不會被繼承 建構函式 析構函式 賦值運算子函式等。public private protected區域的劃分只...