




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1C面向?qū)ο蟪绦蛏婕皬?fù)習(xí)要點(diǎn)重點(diǎn)復(fù)習(xí)第1章復(fù)習(xí)要點(diǎn)簡(jiǎn)單的C++程序#include<iostream>//用cout輸出時(shí)需要用
//此頭文件usingnamespacestd;//使用命名空間stdintmain(){cout<<"ThisisaC++program.\n";//用C++的方法輸出一行
return0;}第1頁(yè)/共74頁(yè)輸入和輸出
格式:cout<<cin>> endl表示結(jié)束一行 數(shù)據(jù)類(lèi)型const常量定義
constfloatPI=3.14159;
占用存儲(chǔ)單元,只讀不可寫(xiě)函數(shù)原型聲明
格式:函數(shù)類(lèi)型函數(shù)名(參數(shù)列表);intmax(intx,inty);
要求:函數(shù)調(diào)用之前必須對(duì)所調(diào)用的函數(shù)作函數(shù)原型聲明第2頁(yè)/共74頁(yè)函數(shù)重載
定義(overload) 要求:參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型不同有默認(rèn)參數(shù)的函數(shù)
格式:floatarea(floatr=6.5)
與函數(shù)重載的關(guān)系第3頁(yè)/共74頁(yè)函數(shù)模版、函數(shù)重載例題1、對(duì)重載函數(shù)形參的描述中,錯(cuò)誤的是
A.參數(shù)的個(gè)數(shù)可能不同
B.參數(shù)的類(lèi)型可能不同
C.參數(shù)的順序可能不同
D.參數(shù)的個(gè)數(shù)、類(lèi)型、順序都相同,只是函數(shù)的返回值類(lèi)型不同
D第4頁(yè)/共74頁(yè)變量的引用*
函數(shù)傳值與函數(shù)傳地址
對(duì)比引用與指針:P19例1.10&1.11內(nèi)置函數(shù)
inline
作用:空間換時(shí)間作用域運(yùn)算符::第5頁(yè)/共74頁(yè)字符串變量
string定義,與字符數(shù)組的關(guān)系
賦值
字符串操作:復(fù)制、連接、比較new和delete運(yùn)算符第6頁(yè)/共74頁(yè)例題1、對(duì)于動(dòng)態(tài)分配內(nèi)存空間描述正確的是
A.使用new運(yùn)算符分配的內(nèi)存空間的長(zhǎng)度必需是常量
B.delete運(yùn)算符可以釋放動(dòng)態(tài)的存儲(chǔ)空間和靜態(tài)的存儲(chǔ)空間
C.由new分配的內(nèi)存空間是不連續(xù)的
D.delete運(yùn)算符只能釋放由new分配的動(dòng)態(tài)存儲(chǔ)空間
D第7頁(yè)/共74頁(yè)什么是藍(lán)?類(lèi)與對(duì)象第8頁(yè)/共74頁(yè)類(lèi)和對(duì)象在C++中,類(lèi)是一種數(shù)據(jù)類(lèi)型。intx;classstudentstd1;基本數(shù)據(jù)類(lèi)型用戶(hù)定義數(shù)據(jù)類(lèi)型變量(實(shí)例)對(duì)象(實(shí)例)第9頁(yè)/共74頁(yè)1.類(lèi)的聲明與對(duì)象的定義2.類(lèi)的數(shù)據(jù)成員與成員函數(shù)3.對(duì)象成員的訪(fǎng)問(wèn)4.構(gòu)造函數(shù)與析構(gòu)函數(shù)5.Const6.Static7.New與delete8.拷貝構(gòu)造函數(shù)9.友元第10頁(yè)/共74頁(yè)第2章要點(diǎn)復(fù)習(xí)基本概念
對(duì)象 封裝與信息隱蔽 抽象 繼承與重用 多態(tài)性第11頁(yè)/共74頁(yè)聲明類(lèi)類(lèi)型*class
CGoods{
private
:
charName[21];
intAmount;
floatPrice;
floatTotal_value;public:void
CountTotal(void);};1.class關(guān)鍵字2.類(lèi)名3.類(lèi)體{};格式4.類(lèi)數(shù)據(jù)成員5.類(lèi)成員函數(shù)6.訪(fǎng)問(wèn)限定符第12頁(yè)/共74頁(yè)定義對(duì)象的方法
1.先聲明類(lèi)類(lèi)型,然后再定義對(duì)象
classStudentstud1;
Studentstud1;
2.在聲明類(lèi)類(lèi)型的同時(shí)定義對(duì)象
classStudent{}stud1;
3.不出現(xiàn)類(lèi)名,直接定義對(duì)象
class{}stud1;第13頁(yè)/共74頁(yè)類(lèi)與結(jié)構(gòu)體類(lèi)型的異同
1.用class聲明的類(lèi)如果不帶成員訪(fǎng)問(wèn)限定符,所有成員默認(rèn)限定為private;
2.用struct聲明的類(lèi)如果不帶成員訪(fǎng)問(wèn)限定符,所有成員默認(rèn)限定為public。第14頁(yè)/共74頁(yè)類(lèi)成員數(shù)據(jù)成員/成員變量--private成員函數(shù)/成員方法--publicinline成員函數(shù)成員函數(shù)的存儲(chǔ)方式第15頁(yè)/共74頁(yè)成員函數(shù)的存儲(chǔ)方式數(shù)據(jù)區(qū)代碼區(qū)對(duì)象1對(duì)象2數(shù)據(jù)區(qū)代碼區(qū)對(duì)象n......?dāng)?shù)據(jù)區(qū)代碼區(qū)數(shù)據(jù)區(qū)對(duì)象1數(shù)據(jù)區(qū)對(duì)象2數(shù)據(jù)區(qū)對(duì)象n......公共代碼區(qū)第16頁(yè)/共74頁(yè)對(duì)象成員的訪(fǎng)問(wèn)*對(duì)象名+成員運(yùn)算符stud1.num=1001;對(duì)象指針Student*p=&stud1;pnum=1001;
對(duì)象引用Student&s=stud1;s.num=1001;第17頁(yè)/共74頁(yè)類(lèi)的封裝性和信息隱蔽
1.公用接口與私有實(shí)現(xiàn)的分離
2.類(lèi)聲明和成員函數(shù)定義的分離P64-653.名詞:對(duì)象、方法、消息
stud.display();第18頁(yè)/共74頁(yè)第3章復(fù)習(xí)要點(diǎn)構(gòu)造函數(shù)*構(gòu)造函數(shù)是特殊的公有成員函數(shù),其特征如下:
1.函數(shù)名與類(lèi)名相同。
2.構(gòu)造函數(shù)無(wú)函數(shù)返回類(lèi)型說(shuō)明。注意是什么也不寫(xiě),也不可寫(xiě)void!實(shí)際上構(gòu)造函數(shù)有返回值,返回的就是構(gòu)造函數(shù)所創(chuàng)建的對(duì)象。
3.在程序運(yùn)行時(shí),當(dāng)新的對(duì)象被建立,該對(duì)象所屬的類(lèi)的構(gòu)造函數(shù)自動(dòng)被調(diào)用,在該對(duì)象生存期中也只調(diào)用這一次。
4.構(gòu)造函數(shù)可以重載。嚴(yán)格地講,說(shuō)明中可以有多個(gè)構(gòu)造函數(shù),它們由不同的參數(shù)表區(qū)分,系統(tǒng)在自動(dòng)調(diào)用時(shí)按一般函數(shù)重載的規(guī)則選一個(gè)執(zhí)行。第19頁(yè)/共74頁(yè) 5.構(gòu)造函數(shù)可以在類(lèi)中定義,也可以在類(lèi)外定義。
6.如果類(lèi)說(shuō)明中沒(méi)有給出構(gòu)造函數(shù),則C++編譯器自動(dòng)給出一個(gè)缺省的構(gòu)造函數(shù):
類(lèi)名(void){}但只要我們定義了一個(gè)構(gòu)造函數(shù),系統(tǒng)就不會(huì)自動(dòng)生成缺省的構(gòu)造函數(shù)。
只要構(gòu)造函數(shù)是無(wú)參的或各參數(shù)均有缺省值的,C++編譯器都認(rèn)為是缺省的構(gòu)造函數(shù),并且缺省的構(gòu)造函數(shù)只能有一個(gè)。第20頁(yè)/共74頁(yè)構(gòu)造函數(shù)的重載*缺省構(gòu)造函數(shù)
Time::Time() {hour=0;minute=0;sec=0;}Timet;帶參數(shù)的構(gòu)造函數(shù)
Time::Time(inth,intm,ints) {hour=h;minute=m;sec=s;}
Timet(13,10,11);用參數(shù)初始化表
Time::Time(inth,intm,ints):hour(h),minute(m),sec(s){}使用默認(rèn)參數(shù)的構(gòu)造函數(shù)
Time::Time(inth=13,intm=10,ints=11){hour=h;minute=m;sec=s;}Timet;第21頁(yè)/共74頁(yè)析構(gòu)函數(shù) 當(dāng)一個(gè)對(duì)象定義時(shí),C++自動(dòng)調(diào)用構(gòu)造函數(shù)建立該對(duì)象并進(jìn)行初始化,那么當(dāng)一個(gè)對(duì)象的生命周期結(jié)束時(shí),C++也會(huì)自動(dòng)調(diào)用一個(gè)函數(shù)注銷(xiāo)該對(duì)象并進(jìn)行善后工作,這個(gè)特殊的成員函數(shù)即析構(gòu)函數(shù)(destructor):
1.
構(gòu)函數(shù)名與類(lèi)名相同,但在前面加上字符‘~’,如~CGoods()。
2.
析構(gòu)函數(shù)無(wú)函數(shù)返回類(lèi)型,與構(gòu)造函數(shù)在這方面是一樣的。但析構(gòu)函數(shù)不帶任何參數(shù)。
3.一個(gè)類(lèi)有一個(gè)也只有一個(gè)析構(gòu)函數(shù),這與構(gòu)造函數(shù)不同。析構(gòu)函數(shù)可以缺省。
4.對(duì)象注銷(xiāo)時(shí),系統(tǒng)自動(dòng)調(diào)用析構(gòu)函數(shù)。第22頁(yè)/共74頁(yè)調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序第23頁(yè)/共74頁(yè)構(gòu)造函數(shù)和析構(gòu)函數(shù)例題1.在下面有關(guān)對(duì)構(gòu)造函數(shù)的描述中,正確的是
。A.
構(gòu)造函數(shù)可以帶有返回值B.
構(gòu)造函數(shù)的名字與類(lèi)名完全相同C.
構(gòu)造函數(shù)必須帶有參數(shù)D.構(gòu)造函數(shù)必須定義,不能缺省2.在下面有關(guān)析構(gòu)函數(shù)特征的描述中,錯(cuò)誤的是
。A.
一個(gè)類(lèi)中只能定義一個(gè)析構(gòu)函數(shù)B.
析構(gòu)函數(shù)名與類(lèi)名完全相同C.
析構(gòu)函數(shù)不能指定返回類(lèi)型D.
析構(gòu)函數(shù)不能帶有參數(shù)3.假定AB為一個(gè)類(lèi),則執(zhí)行“AB
a(4),b[3],*p[2];”語(yǔ)句時(shí),自動(dòng)調(diào)用該類(lèi)構(gòu)造函數(shù)的次數(shù)為
。3
B.4
C.6
D.94.對(duì)于任意一個(gè)類(lèi),析構(gòu)函數(shù)的個(gè)數(shù)最多為(B)A.0B.1C.2D.3第24頁(yè)/共74頁(yè)對(duì)象數(shù)組
對(duì)象數(shù)組的定義、初始化、建立數(shù)組的同時(shí)調(diào)用構(gòu)造函數(shù) P82例3.6對(duì)象指針*
1.指向?qū)ο蟮闹羔?/p>
2.指向?qū)ο蟪蓡T的指針
2.1.指向?qū)ο髷?shù)據(jù)成員的指針
2.2.指向?qū)ο蟪蓡T函數(shù)的指針
3.this指針
P85例3.7this指針的作用第25頁(yè)/共74頁(yè)共用數(shù)據(jù)的保護(hù)Const對(duì)內(nèi)存的使用—只讀不可寫(xiě)(寫(xiě)在首次/初始化完成)。常對(duì)象
constTimet; 或:Timeconstt;常數(shù)據(jù)成員
constinthour;常成員函數(shù)
voidget_time()const;第26頁(yè)/共74頁(yè)指向?qū)ο蟮某V羔?/p>
Time*constp1=&t1;指向常對(duì)象的指針變量
constTime*p1=&t1;對(duì)象的常引用
constTime&t=t1;voidfun(constTime&t);{//不可改變t的值}第27頁(yè)/共74頁(yè)對(duì)象的動(dòng)態(tài)建立和釋放new&deleteBox*pt; pt=newBox;deletept;第28頁(yè)/共74頁(yè)靜態(tài)成員Static由關(guān)鍵字static修飾說(shuō)明的類(lèi)成員,成為靜態(tài)類(lèi)成員(staticclassmember)。雖然使用static修飾說(shuō)明,但與函數(shù)中的靜態(tài)變量有明顯差異。類(lèi)的靜態(tài)成員為其所有對(duì)象共享,不管有多少對(duì)象,靜態(tài)成員只有一份存于公用內(nèi)存中。第29頁(yè)/共74頁(yè)靜態(tài)數(shù)據(jù)成員
初始化(只能在類(lèi)體外進(jìn)行初始化) 既可以通過(guò)對(duì)象名引用,也可以通過(guò)類(lèi)名來(lái)引用靜態(tài)成員函數(shù)
靜態(tài)成員函數(shù)沒(méi)有this指針 靜態(tài)成員函數(shù)訪(fǎng)問(wèn)靜態(tài)數(shù)據(jù)成員,不訪(fǎng)問(wèn)非靜態(tài)成員第30頁(yè)/共74頁(yè)對(duì)象的賦值對(duì)象的復(fù)制拷貝構(gòu)造函數(shù)類(lèi)名對(duì)象2(對(duì)象1)
Box::Box(constBox&b){height=b.height;width=b.width;length=b.length;}第31頁(yè)/共74頁(yè)Static例題假定類(lèi)AB中有一個(gè)公有屬性的靜態(tài)數(shù)據(jù)成員bb,在類(lèi)外不通過(guò)對(duì)象名訪(fǎng)問(wèn)該成員bb的寫(xiě)法為
(1)
。靜態(tài)成員(static)屬于__類(lèi)__,而不屬于__任何一個(gè)對(duì)象__,它被同一個(gè)類(lèi)的所有對(duì)象共享。第32頁(yè)/共74頁(yè)友元
友元函數(shù):friendvoiddisplay(Time&);
友元成員函數(shù):friendvoidTime::display(Date&);友元類(lèi)
允許另一個(gè)類(lèi)或函數(shù)訪(fǎng)問(wèn)你的類(lèi)的東西。ClassA{Private:inti=0;Friendclassb//聲明}ClassB{}Voidmain(){Aa1=newA();Bb1=newB();Intj=b1.i;\\可直接訪(fǎng)問(wèn)A類(lèi)里的}如B是A的友元類(lèi),那么a對(duì)b完全開(kāi)放包括private,也就是B可以訪(fǎng)問(wèn)A里任何東西第33頁(yè)/共74頁(yè)友元例題13、關(guān)于友元函數(shù)
的描述中,錯(cuò)誤的是
A.友元函數(shù)不是成員函數(shù)
B.友元函數(shù)只能訪(fǎng)問(wèn)類(lèi)中私有成員
C.友元函數(shù)破壞隱藏性,盡量少用
D.友元函數(shù)說(shuō)明在類(lèi)體內(nèi),使用關(guān)鍵字friendB第34頁(yè)/共74頁(yè)類(lèi)模版(不考)第35頁(yè)/共74頁(yè)第4章復(fù)習(xí)要點(diǎn)運(yùn)算符重載的方法*
格式:函數(shù)類(lèi)型operator運(yùn)算符名稱(chēng)(形參表列){對(duì)運(yùn)算符的重載處理} 復(fù)數(shù)+P122例4.2 運(yùn)算符重載的規(guī)則P124-126第36頁(yè)/共74頁(yè)運(yùn)算符重載的實(shí)現(xiàn)
1.類(lèi)成員函數(shù)
2.友元函數(shù)
參數(shù)個(gè)數(shù)參數(shù)次序類(lèi)成員函數(shù)參數(shù)個(gè)數(shù)=原操作數(shù)個(gè)數(shù)-1(后置++、--除外)左側(cè)為類(lèi)類(lèi)型友元函數(shù)參數(shù)個(gè)數(shù)=原操作數(shù)個(gè)數(shù),且至少應(yīng)該有一個(gè)自定義類(lèi)型的形參。隨意第37頁(yè)/共74頁(yè)雙目運(yùn)算符重載
P134例4.4單目運(yùn)算符重載區(qū)別“前置和后置”重載流插入運(yùn)算符和流提取運(yùn)算符* 重點(diǎn)是格式:友元函數(shù)/普通函數(shù)
istream&
operator>>(istream&,自定義類(lèi)&);ostream&
operator<<(ostream&,自定義類(lèi)&);第38頁(yè)/共74頁(yè)不同類(lèi)型數(shù)據(jù)間的轉(zhuǎn)換(不考)第39頁(yè)/共74頁(yè)運(yùn)算符重載例題假定要對(duì)類(lèi)AB定義加號(hào)操作符重載成員函數(shù),實(shí)現(xiàn)兩個(gè)AB類(lèi)對(duì)象的減法,并返回相減結(jié)果,則該成員函數(shù)的聲明語(yǔ)句為:()A、AB&operator-() B、ABoperator-(AB&a)C、operator-(ABa) D、ABoperator-(AB&a,AB&b)B
第40頁(yè)/共74頁(yè)第5章復(fù)習(xí)要點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)有4個(gè)主要特點(diǎn):
1.抽象
2.封裝
3.繼承
4.多態(tài)性第41頁(yè)/共74頁(yè)青處于藍(lán),而勝于藍(lán)繼承(inheritance)機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類(lèi)特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能。這樣產(chǎn)生新的類(lèi),稱(chēng)派生類(lèi)。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu)。體現(xiàn)了由簡(jiǎn)單到復(fù)雜的認(rèn)識(shí)過(guò)程。多態(tài)性(polymorphism)多態(tài)性是考慮在不同層次的類(lèi)中,以及在同一類(lèi)中,同名的成員函數(shù)之間的關(guān)系問(wèn)題。函數(shù)的重載,運(yùn)算符的重載,屬于編譯時(shí)的多態(tài)性。以虛函數(shù)為基礎(chǔ)的運(yùn)行時(shí)的多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的標(biāo)志性特征。體現(xiàn)了類(lèi)推和比喻的思想方法。第42頁(yè)/共74頁(yè)派生類(lèi)的聲明方式定義格式*class派生類(lèi)名:訪(fǎng)問(wèn)限定符基類(lèi)名1《,訪(fǎng)問(wèn)限定符基類(lèi)名2,……,訪(fǎng)問(wèn)限定符基類(lèi)名n》{《private:》
成員表1;》
//派生類(lèi)增加或替代的私有成員《public:
成員表2;》
//派生類(lèi)增加或替代的公有成員《protected:
成員表3;》
//派生類(lèi)增加或替代的保護(hù)成員};//分號(hào)不可少第43頁(yè)/共74頁(yè)繼承過(guò)程編制派生類(lèi)時(shí)可分四步
吸收基類(lèi)的成員
改造基類(lèi)成員
發(fā)展新成員
重寫(xiě)構(gòu)造函數(shù)與析構(gòu)函數(shù)
不論是數(shù)據(jù)成員,還是函數(shù)成員,除構(gòu)造函數(shù)與析構(gòu)函數(shù)外全盤(pán)接收
聲明一個(gè)和某基類(lèi)成員同名的新成員,派生類(lèi)中的新成員就屏蔽了基類(lèi)同名成員稱(chēng)為同名覆蓋(override)派生類(lèi)新成員必須與基類(lèi)成員不同名,它的加入保證派生類(lèi)在功能上有所發(fā)展。第44頁(yè)/共74頁(yè)派生類(lèi)的構(gòu)成*第45頁(yè)/共74頁(yè)繼承分類(lèi)基類(lèi)1基類(lèi)2……基類(lèi)n派生類(lèi)1派生類(lèi)2基類(lèi)派生類(lèi)1派生類(lèi)2(a)多重繼承
(b)單繼承
一個(gè)基類(lèi)可以直接派生出多個(gè)派生類(lèi)
派生類(lèi)可以由多個(gè)基類(lèi)共同派生出來(lái),稱(chēng)多重繼承。第46頁(yè)/共74頁(yè)派生類(lèi)成員的訪(fǎng)問(wèn)屬性*第47頁(yè)/共74頁(yè)多級(jí)派生時(shí)的訪(fǎng)問(wèn)屬性
P164例5.4第48頁(yè)/共74頁(yè)繼承例題1.在公有繼承的情況下,基類(lèi)成員在派生類(lèi)中的訪(fǎng)問(wèn)權(quán)限
。A.受限制
B.保持不變
C.
受保護(hù)
D.
不受保護(hù)9.在公有派生情況下,有關(guān)派生類(lèi)對(duì)象和基類(lèi)對(duì)象的關(guān)系,不正確的敘述是(A)
A.派生類(lèi)的對(duì)象可以賦給基類(lèi)的對(duì)象
B.派生類(lèi)的對(duì)象可以初始化基類(lèi)的引用
C.派生類(lèi)的對(duì)象可以直接訪(fǎng)問(wèn)基類(lèi)中的成員
D.派生類(lèi)的對(duì)象的地址可以賦給指向基類(lèi)的指針第49頁(yè)/共74頁(yè)派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)*執(zhí)行派生類(lèi)構(gòu)造函數(shù)的順序是:
①調(diào)用基類(lèi)構(gòu)造函數(shù),初始化基類(lèi)數(shù)據(jù)成員 ②調(diào)用子對(duì)象構(gòu)造函數(shù),初始化子對(duì)象數(shù)據(jù)成員 ③執(zhí)行派生類(lèi)構(gòu)造函數(shù),初始化派生類(lèi)數(shù)據(jù)成員執(zhí)行派生類(lèi)析構(gòu)函數(shù)的順序是:
①調(diào)用派生類(lèi)析構(gòu)函數(shù),清理派生類(lèi)增加數(shù)據(jù)成員 ②調(diào)用子對(duì)象析構(gòu)函數(shù),清理子對(duì)象數(shù)據(jù)成員 ③調(diào)用基類(lèi)析造函數(shù),清理基類(lèi)數(shù)據(jù)成員第50頁(yè)/共74頁(yè)構(gòu)造函數(shù)和析構(gòu)函數(shù)次序例題#include<iostream>usingnamecpacestd;classB1 //基類(lèi)B1聲明{public:B1(inti){cout<<"constructingB1"<<i<<endl;}~B1(){cout<<"destructingB1"<<endl;}};classB2 //基類(lèi)B2聲明{public:B2(intj){cout<<"constructingB2"<<j<<endl;} ~B2(){cout<<"destructingB2"<<endl;} };classB3 //基類(lèi)B3聲明{public:B3(){cout<<"constructingB3*"<<endl;}~B3(){cout<<"destructingB3"<<endl;} };classC:publicB2,publicB1,publicB3 {public: C(inta,intb,intc,intd):B1(a),memberB2(d),memberB1(c),B2(b){}private: B1memberB1; B2memberB2; B3memberB3;};voidmain(){ Cobj(1,2,3,4);}第51頁(yè)/共74頁(yè)constructingB22constructingB11constructingB3*constructingB13constructingB24constructingB3*destructingB3destructingB2destructingB1destructingB3destructingB1destructingB2第52頁(yè)/共74頁(yè)派生類(lèi)構(gòu)造函數(shù)一般形式:派生類(lèi)名::派生類(lèi)名(總參數(shù)表):
基類(lèi)名(實(shí)參表),
子對(duì)象名(參數(shù)表){
派生類(lèi)新增成員的初始化語(yǔ)句; }第53頁(yè)/共74頁(yè)多層派生時(shí)的構(gòu)造函數(shù)
P172例5.7派生類(lèi)的析構(gòu)函數(shù)與構(gòu)造函數(shù)一樣,不能繼承基類(lèi)的。第54頁(yè)/共74頁(yè)派生類(lèi)例題類(lèi)A與類(lèi)B都有public數(shù)據(jù)成員f,類(lèi)C公有繼承A和B,類(lèi)C有public數(shù)據(jù)成員f,類(lèi)D保護(hù)繼承C,d是類(lèi)D的一個(gè)對(duì)象,從d訪(fǎng)問(wèn)類(lèi)A的成員f的表達(dá)式是
。d.A::f
第55頁(yè)/共74頁(yè)多重繼承定義:
classD:publicA,privateB,protectedC{類(lèi)D新增加的成員}多重繼承派生類(lèi)的構(gòu)造函數(shù)派生類(lèi)構(gòu)造函數(shù)名(總參數(shù)表):基類(lèi)1構(gòu)造函數(shù)(參數(shù)表),基類(lèi)2構(gòu)造函數(shù)(參數(shù)表),基類(lèi)3構(gòu)造函數(shù)(參數(shù)表){派生類(lèi)新增成員初始化語(yǔ)句}P176例5.8第56頁(yè)/共74頁(yè)多重繼承的二義性在多重繼承時(shí),基類(lèi)與派生類(lèi)之間,或基類(lèi)之間出現(xiàn)同名成員時(shí),將出現(xiàn)訪(fǎng)問(wèn)時(shí)的二義性(不確定性)——采用同名隱藏規(guī)則或虛函數(shù)(僅針對(duì)成員函數(shù))來(lái)解決。當(dāng)派生類(lèi)從多個(gè)基類(lèi)派生,而這些基類(lèi)又從同一個(gè)基類(lèi)派生,則在訪(fǎng)問(wèn)此共同基類(lèi)中的成員時(shí),將產(chǎn)生二義性——采用虛基類(lèi)來(lái)解決。inta;inta;inta;第57頁(yè)/共74頁(yè)虛基類(lèi)*
P185例5.9classA{……};classB:virtualpublicA{……};classC:virtualpublicA{……};第58頁(yè)/共74頁(yè)基類(lèi)與派生類(lèi)轉(zhuǎn)換*大材小用第59頁(yè)/共74頁(yè)第6章復(fù)習(xí)要點(diǎn)一個(gè)接口,多種方法多態(tài)性的概念第60頁(yè)/共74頁(yè)靜態(tài)多態(tài)在編譯程序時(shí)系統(tǒng)就可以確定調(diào)用哪個(gè)函數(shù),因此靜態(tài)多態(tài)性又稱(chēng)編譯時(shí)的多態(tài)性。靜態(tài)多態(tài)性是通過(guò)函數(shù)重載實(shí)現(xiàn)的。動(dòng)態(tài)多態(tài)在程序運(yùn)行中才能確定操作所針對(duì)的對(duì)象。它又稱(chēng)運(yùn)行時(shí)的多態(tài)性。動(dòng)態(tài)多態(tài)性是通過(guò)基類(lèi)與派生類(lèi)轉(zhuǎn)換+虛函數(shù)實(shí)現(xiàn)的。第61頁(yè)/共74頁(yè)多態(tài)性例題C++語(yǔ)言中的多態(tài)性分為
時(shí)多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯
第62頁(yè)/共74頁(yè)虛函數(shù)*虛函數(shù)是一個(gè)類(lèi)的成員函數(shù),定義格式如下:virtual返回類(lèi)型函數(shù)名(參數(shù)表);關(guān)鍵字virtual指明該成員函數(shù)為虛函數(shù)。virtual僅用于類(lèi)定義中,如虛函數(shù)在類(lèi)外定義,不可加virtual。當(dāng)某一個(gè)類(lèi)的一個(gè)類(lèi)成員函數(shù)被定義為虛函數(shù),則由該類(lèi)派生出來(lái)的所有派生類(lèi)中,該函數(shù)始終保持虛函數(shù)的特征。第63頁(yè)/共74頁(yè)當(dāng)在派生類(lèi)中重新定義虛函數(shù)(overridingavirtualfunction,亦譯作超載或覆蓋)時(shí),不必加關(guān)鍵字virtual。但重新定義時(shí)不僅要同名,而且它的參數(shù)表和返回類(lèi)型全部與基類(lèi)中的虛函數(shù)一樣,否則聯(lián)編時(shí)出錯(cuò)。虛函數(shù)與改造類(lèi)成員,同名覆蓋(override)有關(guān):如未加關(guān)鍵字virtual,則是普通的派生類(lèi)中的新成員函數(shù)覆蓋基類(lèi)同名成員函數(shù)(當(dāng)然參數(shù)表必須一樣,否則是重載),可稱(chēng)為同名覆蓋函數(shù),它不能實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性。第64頁(yè)/共74頁(yè)比較有虛函數(shù)的override和無(wú)虛函數(shù)的override,訪(fǎng)問(wèn)成員第65頁(yè)/共74頁(yè)#include<iostream.h>
classB0
{public:
voiddisplay()
{
cout<<"B0::display()"<<endl;
}
};
classB1:publicB0
{public:
voiddisplay()
{
cout<<"B1::display()"<<endl;
}
};
classD1:publicB1
{public:
voiddisplay()
{
cout<<"D1::display()"<<endl;
}
};
voidfun(B0*ptr)
{
ptr->display();}
voidmain()
{
B0b0;
B1b1;
D1d1;
B0*p;
p=&b0;
fun(p);
p=&b1;
fun(p);
p=&d1;
fun(p);
}
B0::display()
B0::display()
B0::display()
第66頁(yè)/共74頁(yè)#include<iostream.h>
classB0
{public:
virtualvoiddisplay()
{
cout<<"B0::display()"<<endl;
}
};
classB1:publicB0
{public:
voiddisplay()
{
cout<<"B1::display()"<<endl;
}
};
classD1:publicB1
{public:
voiddisplay()
{
cout<<"D1::display()"<<endl;
}
};
voidfun(B0*ptr)
{
ptr->display();}
v
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化肥銷(xiāo)售合作合同范本
- 包裝稻草出售合同范本
- 勞務(wù)代理用工合同范本
- 單位汽車(chē)借用合同范本
- 代理機(jī)構(gòu)中標(biāo)合同范本
- 義工合同范本
- 個(gè)人對(duì)公勞務(wù)合同范本
- 與人投資飯店合同范本
- 醫(yī)院供氧安裝合同范例
- 一方婚前貸款買(mǎi)房合同范本
- 2024-2030年中國(guó)淀粉糖行業(yè)運(yùn)行態(tài)勢(shì)與發(fā)展趨勢(shì)分析報(bào)告
- 診所信息保密和安全管理制度
- 護(hù)士臨床護(hù)理組長(zhǎng)
- 土建、裝飾、維修改造等零星工程施工組織設(shè)計(jì)技術(shù)標(biāo)
- 高速公路養(yǎng)護(hù)作業(yè)安全培訓(xùn)內(nèi)容
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 《大白菜種植栽培技》課件
- 北京工業(yè)大學(xué)《數(shù)據(jù)挖掘》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年物聯(lián)網(wǎng)安裝調(diào)試員(中級(jí)工)職業(yè)資格鑒定考試題庫(kù)(含答案)
- 標(biāo)準(zhǔn)化機(jī)房改造方案
- 珠海市第三人民醫(yī)院中醫(yī)智能臨床輔助診療系統(tǒng)建設(shè)方案
評(píng)論
0/150
提交評(píng)論