版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、類之間的關(guān)系
has-A,uses-A和is-Ahas-A(包含關(guān)系),用以描述一個(gè)類由多個(gè)“部件類”構(gòu)成。實(shí)現(xiàn)has-A關(guān)系用類成員表示,即一個(gè)類中的數(shù)據(jù)成員是已定義的類。
uses-A(一個(gè)類部分地使用另一個(gè)類),通過類之間成員函數(shù)的相互聯(lián)系,定義友員或?qū)ο髤?shù)傳遞實(shí)現(xiàn)。
is-A(繼承)。關(guān)系具有傳遞性,不具有對稱性。第1頁/共110頁非對稱性:不是所有植物都屬于蕨類。傳遞性:高等植物、蕨類植物、芒萁都是植物,具有植物的共同特征。
植物低等植物高等植物藻類菌類地衣類苔蘚類蕨類裸子類被子類地錢小金發(fā)草毛蕨芒萁杉木柏木荔枝橘子繼承關(guān)系
第2頁/共110頁
繼承是類之間定義的一種重要關(guān)系。
一個(gè)B類繼承A類,或稱從類A派生類B類A稱為基類(父類),類B稱為派生類(子類)B1,B2的基類A的派生類C1,C2,C3的基類A的派生類(單繼承)C3的基類B1,B2的派生類(多繼承)AB1B2C1C2C3B1的派生類繼承關(guān)系
第3頁/共110頁classperson{protected:
charname[10];intage;charsex;
public:
voidprint();};classemployee{protected:
charname[10];intage;charsex;
chardepartment[20];floatsalary;public:
voidprint();};為什么要用繼承?第4頁/共110頁繼承:保持已有類的特性而構(gòu)造新類的過程。派生:在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過程。繼承的目的:實(shí)現(xiàn)代碼重用。派生的目的:當(dāng)新的問題出現(xiàn),原有程序無法解決(或不能完全解決)時(shí),需要對原有程序進(jìn)行改造。2、派生類的概念
第5頁/共110頁繼承關(guān)系的語法形式
class派生類名:
基類名表
{
數(shù)據(jù)成員和成員函數(shù)聲明
};派生類的聲明
派生類的功能:可以增加新的數(shù)據(jù)成員;可以增加新的成員函數(shù);可以重新定義基類中已有的成員函數(shù);可以改變現(xiàn)有成員的屬性。第6頁/共110頁基類名表構(gòu)成訪問控制
基類名1,訪問控制
基類名2,…
,訪問控制
基類名n訪問控制:表示派生類對基類的繼承方式
public
公有繼承
private
私有繼承
protected
保護(hù)繼承派生類的聲明
第7頁/共110頁派生類對基類成員的使用,與繼承訪問控制和基類中成員性質(zhì)有關(guān);公有繼承基類的公有成員派生類的公有成員 基類的保護(hù)成員派生類的保護(hù)成員私有繼承基類的公有成員和保護(hù)成員
派生類的私有成員保護(hù)繼承
基類的公有成員和保護(hù)成員
派生類的保護(hù)成員不論什么方式繼承基類,派生類都不能直接使用基類的私有成員。訪問控制第8頁/共110頁(1)公有繼承public成員 public成員protected成員protected成員private成員public成員protected成員private成員基類派生類第9頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB
:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基類數(shù)據(jù)成員x,yprotected:ints;};classC:publicB{public:voidget_H(){cout<<"Enteranumberofh:";cin>>h;}intget_V(){returnv;}voidmake_V(){make_S();v=get_S()*h;} //使用基類成員函數(shù)
protected:inth,v;};classAclassC:publicBclassB:publicA公有繼承的測試
第10頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}
protected:intx,y;};classB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基類數(shù)據(jù)成員x,y
protected:ints;};classC:publicB{public:voidget_H(){cout<<"Enteranumberofh:";cin>>h;}intget_V(){returnv;}voidmake_V(){make_S();v=get_S()*h;}//使用基類成員函數(shù)
protected:inth,v;};classAclassC:publicYclassB:publicX保護(hù)數(shù)據(jù)成員在類層次中可見公有繼承的測試
第11頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}公有繼承的測試
第12頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAxy公有繼承的測試
第13頁/共110頁voidmain(){AobjA;
BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAxyobjB.sobjB.yobjB.xobjBs公有繼承的測試
第14頁/共110頁voidmain(){AobjA;BobjB;
CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBxysobjC.hobjC.vobjC.sobjC.yobjC.xobjChv公有繼承的測試
第15頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";
objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjC對objA的數(shù)據(jù)成員操作xyshv公有繼承的測試
第16頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";
objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjC調(diào)用基類A成員函數(shù)對objB的數(shù)據(jù)成員操作xyshv公有繼承的測試
第17頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();
objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjC調(diào)用派生類B成員函數(shù)對objB的數(shù)據(jù)成員操作xyshv公有繼承的測試
第18頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";
objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjC調(diào)用基類A成員函數(shù)對objC的數(shù)據(jù)成員操作xyshv公有繼承的測試
第19頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();
objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjC調(diào)用派生類C成員函數(shù)對objC的數(shù)據(jù)成員操作xyshv公有繼承的測試
第20頁/共110頁voidmain(){AobjA;BobjB;CobjC;cout<<"Itisobject_A:\n";objA.get_XY();objA.put_XY();cout<<"Itisobject_B:\n";objB.get_XY();objB.make_S();cout<<"S="<<objB.get_S()<<endl;cout<<"Itisobject_C:\n";objC.get_XY();objC.get_H();objC.make_V();cout<<"V="<<objC.get_V()<<endl;}objA.yobjA.xobjAobjB.sobjB.yobjB.xobjBobjC.hobjC.vobjC.sobjC.yobjC.xobjCxyshv公有繼承的測試
第21頁/共110頁public成員protected成員private成員public成員protected成員private成員基類派生類private成員private成員(2)私有繼承第22頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofxandy:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB
:privateA{public:intget_S(){returns;}voidmake_S(){get_XY();s=x*y;} private: ints;};voidmain(){BobjB;
cout<<"Itisobject_B:\n";objB.make_S();cout<<"S="<<objB.get_S()<<endl;}私有繼承的測試
classB:privateAclassA
objB.sobjB.yobjB.xobjBprivate成員第23頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofxandy:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB
:privateA{public:intget_S(){returns;}voidmake_S(){get_XY();s=x*y;} private: ints;};voidmain(){BobjB; cout<<"Itisobject_B:\n";objB.make_S();cout<<"S="<<objB.get_S()<<endl;}classB:privateAclassA調(diào)用基類成員函數(shù)objB.sobjB.yobjB.xobjBprivate成員私有繼承的測試
第24頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofxandy:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB
:privateA{public:intget_S(){returns;}voidmake_S(){get_XY();s=x*y
;} private: ints;};voidmain(){BobjB; cout<<"Itisobject_B:\n";objB.make_S();cout<<"S="<<objB.get_S()<<endl;}classB:privateAclassA訪問私有數(shù)據(jù)成員objB.sobjB.yobjB.xobjBprivate成員私有繼承的測試
第25頁/共110頁#include<iostream.h>classA{public:voidget_XY(){cout<<"Entertwonumbersofxandy:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB:privateA{public:intget_S(){returns;}voidmake_S(){get_XY();s=x*y;} private: ints;};voidmain(){BobjB; cout<<"Itisobject_B:\n";objB.make_S();cout<<"S="<<objB.get_S()<<endl;}classB:privateAclassAobjB.sobjB.yobjB.xobjBprivate成員私有繼承的測試
第26頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;Bb;b.addX();b.addY();cout<<"a.x="<<a.out()<<endl;cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA基類的私有數(shù)據(jù)成員不能在派生類中直接訪問但派生類對象建立私有數(shù)據(jù)空間
b.xa.xb.y私有繼承的測試
第27頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA
b.xa.xb.y私有繼承的測試
第28頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA調(diào)用構(gòu)造函數(shù)對數(shù)據(jù)成員賦值1b.xa.xb.y私有繼承的測試
第29頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;
Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA創(chuàng)建派生類對象調(diào)用基類派生類構(gòu)造函數(shù)b.x=1b.y=1111b.xa.xb.y私有繼承的測試
第30頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;}
voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;
b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA調(diào)用基類公有成員函數(shù)b.x++112b.xa.xb.y私有繼承的測試
第31頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;}
voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA調(diào)用派生類公有成員函數(shù)b.y++122b.xa.xb.y私有繼承的測試
第32頁/共110頁#include<iostream.h>classA{public: A(){x=1;}
intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;} intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA調(diào)用基類版本同名函數(shù)返回b.x的值122b.xa.xb.y私有繼承的測試
第33頁/共110頁#include<iostream.h>classA{public: A(){x=1;} intout(){returnx;} voidaddX(){x++;}private: intx;};classB:publicA{public: B(){y=1;}
intout(){returny;} voidaddY(){y++;}private: inty;};voidmain(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;}classB:publicAclassA調(diào)用派生類版本同名函數(shù)返回b.y的值122b.xa.xb.y私有繼承的測試
第34頁/共110頁public成員protected成員private成員public成員protected成員private成員基類派生類protected成員protected成員(3)保護(hù)繼承第35頁/共110頁3、派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)都不被繼承,需要在派生類中重新定義。由于派生類繼承了基類的成員,在初始化時(shí),要同時(shí)初始化基類成員。聲明派生類構(gòu)造函數(shù)時(shí),除了需要對本類中新增成員進(jìn)行初始化外,還要對基類成員初始化。第36頁/共110頁派生類的構(gòu)造函數(shù)派生類構(gòu)造函數(shù)聲明的一般語法形式如下:<派生類名>::<派生類名>(參數(shù)總表):
基類名1(參數(shù)表1),...,基類名n(參數(shù)表n),內(nèi)嵌對象名1(內(nèi)嵌對象參數(shù)表1),...,內(nèi)嵌對象名m(內(nèi)嵌對象參數(shù)表m){
派生類新增成員的初始化語句;}第37頁/共110頁派生類的構(gòu)造函數(shù)其中:派生類的構(gòu)造函數(shù)名與派生類名相同。參數(shù)總表需要列出初始化基類數(shù)據(jù)、新增內(nèi)嵌對象數(shù)據(jù)及新增一般成員數(shù)據(jù)所需要的全部參數(shù)。冒號之后,列出需要使用參數(shù)進(jìn)行初始化的基類名和內(nèi)嵌成員名及各自的參數(shù)表,各項(xiàng)之間用逗號分隔。第38頁/共110頁派生類構(gòu)造函數(shù)的執(zhí)行順序:
(1)先調(diào)用基類的構(gòu)造函數(shù);(2)然后按照數(shù)據(jù)成員的聲明順序,依次調(diào)用數(shù)據(jù)成員的構(gòu)造函數(shù);(3)最后執(zhí)行派生類構(gòu)造函數(shù)的函數(shù)體。注意:①構(gòu)造函數(shù)的執(zhí)行順序只與成員聲明的順序有關(guān),而與初始化表中各項(xiàng)的排列順序無關(guān)。②常量成員、引用成員、內(nèi)嵌對象,只能通過初始化表的方法初始化。派生類的構(gòu)造函數(shù)基類對象成員派生類第39頁/共110頁
析構(gòu)函數(shù)也不被繼承,派生類自行聲明。聲明方法與一般(無繼承關(guān)系時(shí))類的析構(gòu)函數(shù)相同。派生類析構(gòu)函數(shù)執(zhí)行時(shí)將自動(dòng)調(diào)用基類及內(nèi)嵌對象的析構(gòu)函數(shù),系統(tǒng)會自動(dòng)隱式調(diào)用,因此不必顯式調(diào)用。析構(gòu)函數(shù)的調(diào)用次序與構(gòu)造函數(shù)相反。派生類的析構(gòu)函數(shù)第40頁/共110頁//構(gòu)造函數(shù)調(diào)用順序測試,構(gòu)造函數(shù)無參數(shù)#include<iostream.h>classBase{public:Base(){cout<<"Basecreated.\n";}};classD_class:publicBase{public:D_class(){cout<<"D_classcreated.\n";}};voidmain(){D_classd1;}①調(diào)用基類構(gòu)造函數(shù)第41頁/共110頁//構(gòu)造函數(shù)調(diào)用順序測試,構(gòu)造函數(shù)無參數(shù)#include<iostream.h>classBase{public:Base(){cout<<"Basecreated.\n";}};classD_class:publicBase{public:D_class(){cout<<"D_classcreated.\n";}};voidmain(){D_classd1;}②調(diào)用派生類構(gòu)造函數(shù)第42頁/共110頁#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試第43頁/共110頁#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}intdata1,data2;intdata3;parent_classdata4;data1 data2data4 data1 data2
data3parent_classderived_classdata1 data2帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試第44頁/共110頁帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classparent_class{intdata1,data2;public:
parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};基類有一個(gè)帶參數(shù)的構(gòu)造函數(shù)data1 data2data4 data1 data2
data3parent_classderived_classdata1 data2第45頁/共110頁帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}
intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};成員函數(shù)數(shù)據(jù)成員自增data1 data2data4 data1 data2
data3parent_classderived_classdata1 data2第46頁/共110頁#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5) :parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};data1 data2data4 data1 data2
data3parent_classderived_classdata1 data2帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試第47頁/共110頁#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classderived_class:privateparent_class{intdata3;
parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5) :parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};類成員data1 data2
data4 data1 data2
data3parent_classderived_classdata1 data2帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試第48頁/共110頁帶參數(shù)構(gòu)造函數(shù)調(diào)用順序測試#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5) :parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};派生類構(gòu)造函數(shù)有5個(gè)參數(shù)data1 data2data4 data1 data2
data3parent_classderived_classdata1 data2第49頁/共110頁#include<iostream.h>classparent_class{intdata1,data2;public:parent_class(intp1,intp2){data1=p1;data2=p2;}intinc1(){return++data1;}intinc2(){return++data2;}voiddisplay(){cout<<"data1="<<data1<<",data2="<<data2<<endl;}};classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5):parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){returnparent_class::inc1();}intinc3(){return++data3;}voiddisplay(){parent_class::display();data4.display();cout<<"data3="<<data3<<endl;}};voidmain(){derived_classd1(17,18,1,2,-5);d1.inc1();d1.display();}classderived_class:privateparent_class{intdata3;parent_classdata4;public:derived_class(intp1,intp2,intp3,intp4,intp5) :parent_class(p1,p2),data4(p3,p4){data3=p5;}intinc1(){retu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年菏澤單縣事業(yè)單位公開招聘初級綜合類崗位人員(26人)筆試備考題庫及答案解析
- 2026廣西防城港市東興市商務(wù)和口岸管理局、東興海關(guān)招聘1人(第二批)筆試模擬試題及答案解析
- 2025年血糖檢測試題大題及答案
- 2025年追風(fēng)安全測試題及答案
- (2025年)全科轉(zhuǎn)崗培訓(xùn)試題及答案
- (2025年)公司安全月知識競賽題及答案解析
- 2025年安保技師考試題庫及答案
- 2025年科研中級考試題庫及答案
- 2025年膽小測試題及答案
- 2026年阜陽市安徽君源綠化工程有限公司公開招聘勞務(wù)派遣人員筆試模擬試題及答案解析
- 天津市八校聯(lián)考2025屆高三上學(xué)期1月期末考試英語試卷(含答案無聽力原文及音頻)
- 2026屆遼寧省遼南協(xié)作校高一數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 2026瑞眾保險(xiǎn)全國校園招聘參考筆試題庫及答案解析
- 2025年山東省棗莊市檢察院書記員考試題(附答案)
- GB/T 3634.1-2025氫氣第1部分:工業(yè)氫
- JJG 499-2021 精密露點(diǎn)儀檢定規(guī)程
- 寒假安全教育課件模板
- 短視頻內(nèi)容版權(quán)協(xié)議2025年執(zhí)行版
- 社區(qū)康養(yǎng)服務(wù)活動(dòng)方案
- 黑龍江省生態(tài)環(huán)境廳直屬事業(yè)單位招聘考試真題2025
- 2025年數(shù)字印刷可行性報(bào)告
評論
0/150
提交評論