繼承章節總結

2021-08-20 22:22:25 字數 3154 閱讀 5154

一、基礎知識

1、基類與派生類

(1)繼承語法形式:

class 派生類名:基類名錶

資料成員和成員函式宣告

基類類名錶構成:

訪問控制 基類名

訪問控制有三種

void put_xy()

protected: int x, y;

};class b : public a

; void make_s() ;

protected: int s;

};class c : public b

int get_v()

void make_v()

protected: int h, v;

};int main()

a類做基類,x,y宣告為受保護型別資料成員,可以在派生類中引用,b類繼承a中資料成員,新增資料成員s,make_s使用基類中的資料成員,求面積,c類繼承b類,並增加v,h,使用b類中資料成員求體積v.

(3)重名成員

派生類中定義與基類同名成員,遮蔽基類成員,如在派生類中使用基類同名成員,顯式地使用類名限定符 類名:成員

例2:

#includeusing namespace std ;

class a

void print()

};class b : public a

void print()

void printab()

};int main()

a、b類中都有成員print(),如果想呼叫a類的print(),必須在前面加基類名限定

(4)派生類中訪問靜態資料成員

定義的靜態成員,將被所有派生類共享

訪問靜態成員的形式

類名::成員或物件名.成員。

2、基類初始化:

(1)建立派生類物件時用指定引數呼叫基類的建構函式進行初始化

派生類建構函式宣告格式為:

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

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

例3:

#includeusing 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 ( )

派生類建構函式中前兩個引數對基類資料成員初始化,中間兩個引數對物件成員初始化,最後乙個引數對派生類新增成員初始化

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

基類的建構函式和析構函式不能繼承

如果基類沒有定義建構函式或是定義無參建構函式,派生類也不用定義建構函式。

如果基類無無參建構函式,派生類必須定義建構函式

派生類是否定義析構函式與所屬基類無關

如果派生類基類也是派生類,每個派生類只負責直接基類的構造

(3)派生類析構函式

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

建構函式的執行順序是:基類→派生類;

析構函式的執行順序是:派生類→基類。

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

建構函式的執行順序:基類→物件成員→派生類;

析構函式的執行順序:派生類→物件成員→基類。

3、多繼承

乙個類有多個直接基類的繼承關係稱為多繼承

多繼承宣告語法

class

派生類名

: 訪問控制 基類名

1, 

訪問控制  基類名

2,  … ,

訪問控制 基類名n

; 多繼承在實際中不常用,因此不作詳細介紹,了解即可。

4、賦值相容原則

(1)在程式中需要使用基類物件的地方都可以用公有派生類的物件代替

派生類物件可以賦值給基類物件:

例:base b;

derived d;

b=d;

b中所有資料成員都具有物件d中對應資料成員的值

派生類物件可以初始化基類引用:

例:derived d;

base&br=d;

派生類物件可以賦給指向基類的指標:

例:derived d;

base *

bptr

=&d;

派生類物件可以賦給指向基類物件的指標

derived *

dptr,obj; 

dptr

=&obj;

base*

bptr

=dptr;

注意:替代之後,派生類物件可以作為基類物件使用,但只能使用基類成員。

(2)乙個基類物件派上作用的地方派生類一樣派上作用,反之不然

例如:

class person ;

class student : publicperson ;

void eat(person &p){};

void study(student&s){};

void main( )

eat(s)可以,但study(p)會發生錯誤,不能用基類替代派生類

(3)賦值相容應注意的問題:

指向基類的指標可以指向公有派生類的物件,但不允許指向它的私有派生類的物件。

允許將乙個宣告為指向基類的指標指向其公有派生類物件,但是不能將乙個宣告為指向派生類物件的指標指向基類物件。

宣告為指向基類物件的指標,當其指向公有派生類物件時,只能用它來直接訪問派生類中從基類繼承來的成員,而不能直接訪問公有派生類的定義的成員。

二、心得體會

這一章學習了繼承,繼承就是從乙個已有類中繼承資料成員,當有多個類有著相同的資料成員時,可以採用這種方法,從而大大縮短**長度。因此,繼承其實,不是一開始就是設計好的,而是寫類時根據類的關係來設計的。在圖書館管理系統中,圖書與使用者有著共同的記錄類,就可以考慮把這個記錄類單獨拿出來,做乙個基類,圖書和使用者做派生類從其中繼承,同時,管理端和使用者端有著同樣的圖書向量也可以考慮做乙個繼承。不過,我在繼承資料成員的處理上,還有一些問題,還需要進一步研究。

陣列章節總結

陣列 一 知識點 陣列 是一組具有相同型別的變數的組合。可用於儲存大量同型別的相關資料。也指按順序排列的一組同種型別的資料所構成的集合。乙個陣列在記憶體中佔一片連續的儲存空間。陣列名不僅表示名稱。而且還表示首位址。注意 陣列下標從零開始。一維陣列的定義初始化 陣列定義後的初值仍是隨機數,一般需我們來...

類的繼承章節中的概念

類的繼承章節中的概念 1.為什麼需要繼承?1.減少開發的時間,降低 的冗餘。2.繼承是用來完善物件導向的程式設計思想。2.繼承的語法格式 訪問修飾符 class 子類名 extends 父類名 3.子類能繼承到父類的那些方法和屬性,而那些方法和屬效能被子類呼叫 子類可以繼承到父類所有的屬性和方法。子...

組合語言 章節總結

第一章 彙編指令和機器指令一一對應,有編譯器翻譯識別,計算機無法直接識別 乙個儲存單元等於1位元組 1位元組等於8位 1kb 1024byte 位元組 1byte 8bit 位 cpu中,指令和資料都是二進位制形式存在 磁碟的資料,cpu無法直接使用,只能讀到記憶體中,才能被cpu使用 cpu可以使...