一、基礎知識
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可以使...