在教材中給出的對類的繼承和派生的解釋:
「類的繼承,是新的類從已有類那裡得到已有的特性。」
「從已有的類產生新類的過程就是類的派生。」
新的類是基類的派生類,新的類從基類處得到已有的特性。
新的類是基類的派生類,新的類從基類處得到已有的特性。
例1、寫乙個類student,再寫乙個student類的派生類undergraduate。
**:
#define _crt_secure_nowarnings
#include
#include
using namespace std;
class
student
student
(string string1,int years)
void
setno
(string string1, int years)
string getname()
int getold()
private
: string name;
int old;};
class
undergrauate
:public student
undergrauate
(string s
,string m
,string n
,int o
) string getschool()
string getmajor()
private
: string school;
string major;};
int main()
執行截圖:
student類從undergraduate類繼承了undergraduate類的public成員,如成員函式getname和成員函式getold,在student類中可以直接訪問undergraduate類的公有成員,在類外可以通過student類訪問undergraduate類的公有成員。
在這裡,student類是undergraduate類的派生類,undergraduate類是student類的基類。
1、公有繼承
「當類的繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可訪問。」
2、私有繼承
「當類的繼承方式為私有繼承時,基類中的公有成員和保護成員都以私有成員身份出現在派生類中,而基類的私有成員在派生類中不可直接訪問。」
3、保護繼承
「保護繼承中,基類的公有成員和保護成員都以保護成員的身份出現在派生類中,而基類的私有成員不可直接訪問。」
例2、在例題1的基礎上,規定繼承方式為私有繼承,並在設法驗證該繼承方式的特性。
在例題1**的基礎上,將繼承方式修改為題目指定的私有繼承。
編譯器報錯,不可再訪問派生類從基類繼承的基類中的公有函式,因為繼承方式為私有繼承,派生類繼承的基類的公有成員和保護成員再派生類中的屬性變為私有,固無法直接訪問。
解決方法:由於私有成員不可直接訪問,但可以通過成員函式去訪問。在student類中寫兩個函式,分別再在這兩個函式中呼叫繼承的getname函式和getold函式。然後在主函式中呼叫這兩個新寫的函式即可得到物件的成員name和成員old的值。
實驗**:
#define _crt_secure_nowarnings
#include
#include
using namespace std;
class
student
student
(string string1,int years)
void
setno
(string string1, int years)
string getname()
int getold()
private
: string name;
int old;};
class
undergrauate
:private student
undergrauate
(string s
,string m
,string n
,int o
) string getschool()
string getmajor()
string getname()
int getold()
private
: string school;
string major;};
int main()
執行截圖:
總結:繼承方式是怎樣的,基類的公有成員和保護成員的屬性在派生類中同繼承的方式一樣(公有繼承除外,在公有繼承中,基類的成員繼承到派生類中時其屬性不變),且無論繼承方式是什麼,派生類都不可直接訪問基類的私有成員。
派生與繼承 多重派生
1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...
繼承與派生
實驗內容 建立乙個基類,兩個派生類,讓每乙個派生類都包含乙個函式area 分別用來返回矩形和三角形的面積。用建構函式對height和width進行初始化。要求通過基類指標訪問虛函式的方法。純虛函式 virtual double area 0 純虛函式的作用是在基類中為派生類保留乙個函式的名字,以便派...
繼承與派生
在c 中,所謂 繼承 就是在乙個已存在的類的基礎上建立乙個新的類。已存在的類成為 基類 新建立的類成為 派生類 乙個新類從已有的類那裡獲得其已有特性,這種現象成為累的繼承。從另一角度說,從已有的類產生乙個新的子類,稱謂累的派生。派生類的宣告方式 class 派生類名 繼承方式 基類名 派生類新增加的...