1、繼承
在乙個已經存在的類的基礎上建立乙個新的類。通過繼承,乙個新建子類從已有的父類那裡獲得父類的特性。從另一角度看,從已有的類(父類)產生乙個新的子類,稱為類的派生。
單繼承:乙個派生類只從乙個基類派生
多重繼承:乙個派生類有兩個或多個基類。
派生類是基類的具體化,而基類是派生類的抽象。
2、宣告派生類的一般形式:
class 派生類名:[繼承方式] 基類名
派生類新增加的成員
}繼承的方式:public、private、protected
(1) 公有繼承(public)
公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。
(2)私有繼承(private)
私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。
(3)保護繼承(protected)
保護繼承的特點是基類的所有公有成員和保護成員都成為派生類的保護成員,並且只能被它的派生類成員函式或友元訪問,基類的私有成員仍然是私有的。
舉例:公有繼承
class base //父類
2 ;
10 class derived: public base //子類,繼承自base,繼承型別為公有繼承
11 24 int _d_pub;
25 } ;
私有繼承:
class c :private base //基類base的派生類c(私有繼承)
};
保護繼承:
class e :protected base //基類base的派生類e(保護繼承)
};
3、派生類的建構函式
建構函式的主要功能是對資料成員的初始化。使用者在宣告基類時可以不定義建構函式,系統會自動設定乙個預設的建構函式,不執行任何操作。如果需要對類中的成員初始化,應自己構造初始函式。
基類的建構函式是不能繼承的,在宣告派生類的時,派生類並沒有把基類的建構函式繼承過來,為了使執行派生類的建構函式的同時,使派生類的資料成員和基類的資料成員同時初始化,需要在執行派生類的建構函式時,同時呼叫基類的建構函式。
(1)派生類的建構函式的一般形式:
派生類建構函式名(總形式引數表列):基類建構函式名(實際參數列列)
如:student1(int n,string nam,char s,int a,string ad):student(n,nam,s),age(a),addr(ad){}
對於派生類中增加的成員資料的初始化也可以不再初始化表中進行初始化,而是在函式體中進行:
student1(int n,string name,char s,int a,string ad):student(n,nam,s)
;class derived:public base
如:student1 (int n,string name,int n1,string nam1,int a,string ad):student(n,nam),monitor(n1,nam),age(a),addr(ad){}
執行順序:
先呼叫基類的建構函式,對基類的資料成員初始化。
在呼叫子物件的建構函式,對子物件的資料成員初始化。
再執行派生類建構函式本身,對派生類資料成員的初始化。
(4)多層派生時的建構函式
乙個類不僅可以派生出乙個派生類,派生類還可以繼續派生,形成派生的層次結構。
4、派生類的析構函式
在派生時,派生類是不能繼承基類的析構函式的,也需要派生類的析構函式去呼叫基類的析構函式。在派生類中可以根據需要定義自己的析構函式,用來對派生類中所增加的成員進行清理工作。基類的清理工作仍然由基類的析構函式負責。在執行派生類的析構函式時,系統會自動的呼叫基類的析構函式和子物件的析構函式,對基類和子物件進行清理。
5、多重繼承
c++允許乙個派生類同時繼承多個基類,稱為多重繼承。
(1)定義形式
class d:public a,private b,protected c
派生與繼承 多重派生
1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...
C 繼承與派生 學習筆記
一 繼承和派生的基本概念 繼承是c 語言中的一種重要的機制,也是物件導向的乙個重要特徵,實現了物件導向程式設計思想中軟體復用的功能。繼承的實質就是通過現有的類的特徵,構造乙個具有現有類特徵的新類,這個新類成為派生類。派生類是從乙個或者多個以前定義的類 基類 繼承資料和函式,同時增加或者重定義資料和函...
C 繼承與派生 學習筆記
一 繼承和派生的基本概念 繼承是c 語言中的一種重要的機制,也是物件導向的乙個重要特徵,實現了物件導向程式設計思想中軟體復用的功能。繼承的實質就是通過現有的類的特徵,構造乙個具有現有類特徵的新類,這個新類成為派生類。派生類是從乙個或者多個以前定義的類 基類 繼承資料和函式,同時增加或者重定義資料和函...