版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第1章復(fù)習(xí)章復(fù)習(xí)(fx)要點要點 簡單( jindn)的C+程序#include / 用cout輸出時需要用 / 此頭文件using namespace std; / 使用命名(mng mng)空間stdint main() coutThis is a C+ program.n; / 用C+的方法輸出一行 return 0;第1頁/共74頁第一頁,共75頁。 輸入和輸出格式:coutendl表示結(jié)束一行數(shù)據(jù)類型 const 常量定義 const float PI = 3.14159;占用存儲單元,只讀不可寫 函數(shù)原型聲明 格式:函數(shù)類型 函數(shù)名(參數(shù)列表); int max(int x, i
2、nt y); 要求:函數(shù)調(diào)用之前必須(bx)對所調(diào)用的函數(shù)作函數(shù)原型聲明第2頁/共74頁第二頁,共75頁。 函數(shù)重載 定義(overload) 要求:參數(shù)個數(shù)或參數(shù)類型不同 有默認參數(shù)的函數(shù) 格式(g shi):float area(float r=6.5) 與函數(shù)重載的關(guān)系第3頁/共74頁第三頁,共75頁。函數(shù)模版、函數(shù)重載函數(shù)模版、函數(shù)重載(zhn zi)例題例題1、對重載函數(shù)形參的描述中,錯誤的是 A. 參數(shù)的個數(shù)可能不同 B. 參數(shù)的類型(lixng)可能不同C. 參數(shù)的順序可能不同 D. 參數(shù)的個數(shù)、類型(lixng)、順序都相同,只是函數(shù)的返回值類型(lixng)不同D第4頁/共7
3、4頁第四頁,共75頁。 變量的引用* 函數(shù)傳值與函數(shù)傳地址 對比(dub)引用與指針:P19 例1.10&1.11 內(nèi)置函數(shù) inline 作用:空間換時間 作用域運算符 :第5頁/共74頁第五頁,共75頁。 字符串變量 string 定義,與字符數(shù)組的關(guān)系(gun x) 賦值 字符串操作:復(fù)制、連接、比較 new和delete運算符第6頁/共74頁第六頁,共75頁。例題例題(lt)1、對于動態(tài)分配內(nèi)存空間描述正確的是 A使用new運算符分配的內(nèi)存空間的長度必需是常量(chngling) Bdelete運算符可以釋放動態(tài)的存儲空間和靜態(tài)的存儲空間C由new分配的內(nèi)存空間是不連續(xù)的Dde
4、lete運算符只能釋放由new分配的動態(tài)存儲空間 D第7頁/共74頁第七頁,共75頁。什么什么(shn me)是是藍?藍?類與對象(duxing)第8頁/共74頁第八頁,共75頁。類和對象類和對象(duxing) 在C+中,類是一種(y zhn)數(shù)據(jù)類型。int x;class student std1; 基本(jbn)數(shù)據(jù)類型用戶定義數(shù)據(jù)類型變量(實例)對象(實例)第9頁/共74頁第九頁,共75頁。 1.類的聲明與對象的定義(dngy) 2.類的數(shù)據(jù)成員與成員函數(shù) 3.對象成員的訪問 4.構(gòu)造函數(shù)與析構(gòu)函數(shù) 5. Const 6. Static 7. New與delete 8. 拷貝構(gòu)造函數(shù)
5、 9. 友元第10頁/共74頁第十頁,共75頁。第第2章章 要點要點(yodin)復(fù)習(xí)復(fù)習(xí) 基本概念對象(duxing)封裝與信息隱蔽抽象繼承與重用多態(tài)性第11頁/共74頁第十一頁,共75頁。 聲明(shngmng)類類型*class CGoods private : char Name21 ; int Amount ; float Price ; float Total_value ;public : void CountTotal(void) ; ;1. class關(guān)鍵字2. 類名(li mn)3. 類體 ; 格式4. 類數(shù)據(jù)成員5. 類成員函數(shù)6. 訪問限定符 第12頁/共74頁第十二頁
6、,共75頁。 定義對象的方法 1. 先聲明類類型(lixng),然后再定義對象 class Student stud1; Student stud1; 2. 在聲明類類型(lixng)的同時定義對象 class Student stud1; 3. 不出現(xiàn)類名,直接定義對象 class stud1;第13頁/共74頁第十三頁,共75頁。 類與結(jié)構(gòu)( jigu)體類型的異同 1.用class聲明的類如果不帶成員訪問限定符,所有成員默認限定為private;2.用struct聲明的類如果不帶成員訪問限定符,所有成員默認限定為public。第14頁/共74頁第十四頁,共75頁。 類成員(chngyun
7、) 數(shù)據(jù)成員(chngyun)/成員(chngyun)變量 - private 成員(chngyun)函數(shù)/成員(chngyun)方法 - publicinline成員函數(shù)成員函數(shù)的存儲(cn ch)方式第15頁/共74頁第十五頁,共75頁。 成員(chngyun)函數(shù)的存儲方式數(shù)據(jù)區(qū)代碼區(qū)對象1對象數(shù)據(jù)區(qū)代碼區(qū)對象數(shù)據(jù)區(qū)代碼區(qū)數(shù)據(jù)區(qū)對象1數(shù)據(jù)區(qū)對象數(shù)據(jù)區(qū)對象公共代碼區(qū)第16頁/共74頁第十六頁,共75頁。 對象成員(chngyun)的訪問* 對象名+成員(chngyun)運算符 stud1.num =1001; 對象指針 Student *p=&stud1; pnum =1001;
8、對象引用 Student &s=stud1; s.num =1001;第17頁/共74頁第十七頁,共75頁。 類的封裝性和信息隱蔽 1.公用接口與私有實現(xiàn)的分離 2.類聲明和成員函數(shù)定義(dngy)的分離P64-65 3.名詞:對象、方法、消息 stud.display();第18頁/共74頁第十八頁,共75頁。第第3章復(fù)習(xí)章復(fù)習(xí)(fx)要點要點 構(gòu)造函數(shù)* 構(gòu)造函數(shù)是特殊的公有成員函數(shù),其特征如下: 1.函數(shù)名與類名相同。2.構(gòu)造函數(shù)無函數(shù)返回(fnhu)類型說明。注意是什么也不寫,也不可寫void!實際上構(gòu)造函數(shù)有返回(fnhu)值,返回(fnhu)的就是構(gòu)造函數(shù)所創(chuàng)建的對象。3.
9、在程序運行時,當(dāng)新的對象被建立,該對象所屬的類的構(gòu)造函數(shù)自動被調(diào)用,在該對象生存期中也只調(diào)用這一次。4.構(gòu)造函數(shù)可以重載。嚴格地講,說明中可以有多個構(gòu)造函數(shù),它們由不同的參數(shù)表區(qū)分,系統(tǒng)在自動調(diào)用時按一般函數(shù)重載的規(guī)則選一個執(zhí)行。第19頁/共74頁第十九頁,共75頁。5.構(gòu)造函數(shù)可以在類中定義,也可以在類外定義。 6. 如果類說明中沒有(mi yu)給出構(gòu)造函數(shù),則C+編譯器自動給出一個缺省的構(gòu)造函數(shù): 類名(void) 但只要我們定義了一個構(gòu)造函數(shù),系統(tǒng)就不會自動生成缺省的構(gòu)造函數(shù)。 只要構(gòu)造函數(shù)是無參的或各參數(shù)均有缺省值的,C+編譯器都認為是缺省的構(gòu)造函數(shù),并且缺省的構(gòu)造函數(shù)只能有一個 。
10、第20頁/共74頁第二十頁,共75頁。構(gòu)造函數(shù)的重載構(gòu)造函數(shù)的重載(zhn zi)* 缺省構(gòu)造函數(shù) Time:Time() hour=0; minute=0; sec=0; Time t; 帶參數(shù)的構(gòu)造函數(shù) Time:Time(int h, int m, int s) hour=h; minute=m; sec=s; Time t(13,10,11); 用參數(shù)初始化表 Time:Time(int h, int m, int s):hour(h),minute(m),sec(s) 使用(shyng)默認參數(shù)的構(gòu)造函數(shù) Time:Time(int h=13, int m=10, int s=11)
11、 hour=h; minute=m; sec=s; Time t;第21頁/共74頁第二十一頁,共75頁。 析構(gòu)函數(shù)當(dāng)一個對象定義時,C+自動調(diào)用構(gòu)造函數(shù)建立該對象并進行初始化,那么當(dāng)一個對象的生命周期結(jié)束時,C+也會自動調(diào)用一個函數(shù)注銷該對象并進行善后工作,這個特殊的成員函數(shù)即析構(gòu)函數(shù)(destructor):1. 構(gòu)函數(shù)名與類名相同,但在前面(qin mian)加上字符,如CGoods()。2. 析構(gòu)函數(shù)無函數(shù)返回類型,與構(gòu)造函數(shù)在這方面是一樣的。但析構(gòu)函數(shù)不帶任何參數(shù)。3. 一個類有一個也只有一個析構(gòu)函數(shù),這與構(gòu)造函數(shù)不同。析構(gòu)函數(shù)可以缺省。4. 對象注銷時,系統(tǒng)自動調(diào)用析構(gòu)函數(shù)。第22
12、頁/共74頁第二十二頁,共75頁。 調(diào)用(dioyng)構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序第23頁/共74頁第二十三頁,共75頁。構(gòu)造函數(shù)構(gòu)造函數(shù)(hnsh)和析構(gòu)函數(shù)和析構(gòu)函數(shù)(hnsh)例題例題1. 在下面有關(guān)對構(gòu)造函數(shù)的描述中,正確的是 。A. 構(gòu)造函數(shù)可以帶有返回值B. 構(gòu)造函數(shù)的名字與類名完全相同C. 構(gòu)造函數(shù)必須(bx)帶有參數(shù)D.構(gòu)造函數(shù)必須(bx)定義,不能缺省2在下面有關(guān)析構(gòu)函數(shù)特征的描述中,錯誤的是 。A. 一個類中只能定義一個析構(gòu)函數(shù)B. 析構(gòu)函數(shù)名與類名完全相同C. 析構(gòu)函數(shù)不能指定返回類型D. 析構(gòu)函數(shù)不能帶有參數(shù)3假定AB為一個類,則執(zhí)行“AB a(4) , b3 , * p
13、2 ;”語句時,自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為 。3 B. 4 C. 6 D. 94.對于任意一個類,析構(gòu)函數(shù)的個數(shù)最多為( B ) A.0 B.1 C.2 D.3第24頁/共74頁第二十四頁,共75頁。 對象數(shù)組對象數(shù)組的定義、初始化、建立(jinl)數(shù)組的同時調(diào)用構(gòu)造函數(shù)P82 例3.6 對象指針*1.指向?qū)ο蟮闹羔?.指向?qū)ο蟪蓡T的指針2.1.指向?qū)ο髷?shù)據(jù)成員的指針2.2.指向?qū)ο蟪蓡T函數(shù)的指針3. this指針 P85 例3.7 this指針的作用第25頁/共74頁第二十五頁,共75頁。共用共用(n yn)數(shù)據(jù)的保護數(shù)據(jù)的保護 Const 對內(nèi)存(ni cn)的使用只讀不可寫(寫在首次/
14、初始化完成)。 常對象 const Time t;或:Time const t; 常數(shù)據(jù)成員 const int hour; 常成員函數(shù) void get_time() const;第26頁/共74頁第二十六頁,共75頁。 指向?qū)ο蟮某V羔?Time * const p1 = & t1; 指向常對象的指針變量(binling) const Time *p1 = & t1; 對象的常引用 const Time &t= t1; void fun( const Time & t ); /不可改變t的值第27頁/共74頁第二十七頁,共75頁。對象的動態(tài)對象的動態(tài)(dng
15、ti)建立和釋放建立和釋放 new & delete Box *pt; pt = new Box; delete pt;第28頁/共74頁第二十八頁,共75頁。靜態(tài)靜態(tài)(jngti)成員成員Static 由關(guān)鍵字static修飾說明的類成員,成為(chngwi)靜態(tài)類成員(static class member)。雖然使用static修飾說明,但與函數(shù)中的靜態(tài)變量有明顯差異。類的靜態(tài)成員為其所有對象共享,不管有多少對象,靜態(tài)成員只有一份存于公用內(nèi)存中。第29頁/共74頁第二十九頁,共75頁。 靜態(tài)數(shù)據(jù)成員初始化(只能在類體外進行初始化)既可以通過對象名引用,也可以通過類名(li mn)
16、來引用 靜態(tài)成員函數(shù) 靜態(tài)成員函數(shù)沒有this指針 靜態(tài)成員函數(shù)訪問靜態(tài)數(shù)據(jù)成員,不訪問非靜態(tài)成員第30頁/共74頁第三十頁,共75頁。 對象的賦值 對象的復(fù)制(fzh) 拷貝構(gòu)造函數(shù) 類名 對象2(對象1) Box:Box(const Box& b) height=b.height; width=b.width; length=b.length; 第31頁/共74頁第三十一頁,共75頁。Static例題例題(lt)假定類AB中有一個公有屬性的靜態(tài)數(shù)據(jù)成員bb,在類外不通過對象名訪問該成員bb的寫法(xif)為 (1) 。 靜態(tài)成員(static)屬于_類_ ,而不屬于_任何一個對象_
17、 ,它被同一個類的所有對象共享。 第32頁/共74頁第三十二頁,共75頁。 友元 友元函數(shù)(hnsh): friend void display(Time &); 友元成員函數(shù)(hnsh):friend void Time:display(Date &); 友元類 允許另一個類或函數(shù)訪問你的類的東西(dngx)。Class APrivate:int i=0;Friend class b /聲明Class B Void main() A a1=new A(); B b1= new B(); Int j=b1.i; 可直接訪問A類里的如B是A的友元類,那么a對b完全開放包括priv
18、ate,也就是B可以訪問A里任何東西(dngx)第33頁/共74頁第三十三頁,共75頁。友元例題友元例題(lt)13、關(guān)于友元函數(shù) 的描述(mio sh)中,錯誤的是 A. 友元函數(shù)不是成員函數(shù) B. 友元函數(shù)只能訪問類中私有成員C. 友元函數(shù)破壞隱藏性,盡量少用D. 友元函數(shù)說明在類體內(nèi),使用關(guān)鍵字friend B第34頁/共74頁第三十四頁,共75頁。 類模版(不考)第35頁/共74頁第三十五頁,共75頁。第第4章復(fù)習(xí)章復(fù)習(xí)(fx)要點要點 運算符重載的方法(fngf)*格式: 函數(shù)類型 operator 運算符名稱(形參表列) 對運算符的重載處理復(fù)數(shù)+ P122 例4.2運算符重載的規(guī)則
19、 P124-126第36頁/共74頁第三十六頁,共75頁。 運算符重載的實現(xiàn)1.類成員(chngyun)函數(shù) 2.友元函數(shù) 參數(shù)個數(shù)參數(shù)個數(shù)參數(shù)次序參數(shù)次序類成員函數(shù)類成員函數(shù)參數(shù)個數(shù)參數(shù)個數(shù)=原操作數(shù)個原操作數(shù)個數(shù)數(shù)-1(后置(后置+、-除除外)外)左側(cè)為類類型左側(cè)為類類型友元函數(shù)友元函數(shù)參數(shù)個數(shù)參數(shù)個數(shù)=原操作數(shù)個原操作數(shù)個數(shù)數(shù),且至少應(yīng)該有一,且至少應(yīng)該有一個自定義類型的形參。個自定義類型的形參。隨意隨意第37頁/共74頁第三十七頁,共75頁。 雙目運算符重載P134 例4.4 單目運算符重載 區(qū)別 “前置和后置” 重載流插入運算符和流提取(tq)運算符*重點是格式:友元函數(shù)/普通函數(shù)
20、istream & operator (istream & ,自定義類 &); ostream & operator (ostream & ,自定義類 &);第38頁/共74頁第三十八頁,共75頁。 不同類型(lixng)數(shù)據(jù)間的轉(zhuǎn)換(不考)第39頁/共74頁第三十九頁,共75頁。運算符重載運算符重載(zhn zi)例題例題假定(jidng)要對類AB定義加號操作符重載成員函數(shù),實現(xiàn)兩個AB類對象的減法,并返回相減結(jié)果,則該成員函數(shù)的聲明語句為:( )A、 AB & operator - ( ) B、 AB operator -(AB &
21、amp; a)C、 operator -(AB a) D、 AB operator -(AB & a , AB & b)B 第40頁/共74頁第四十頁,共75頁。第第5章復(fù)習(xí)章復(fù)習(xí)(fx)要點要點 面向?qū)ο蟪绦蛟O(shè)計有4個主要特點(tdin):1.抽象2.封裝3.繼承4.多態(tài)性第41頁/共74頁第四十一頁,共75頁。青處于青處于(chy)藍,而勝于藍藍,而勝于藍 繼承(inheritance)機制是面向?qū)ο蟪绦蛟O(shè)計(chn x sh j)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進行擴展,增加功能。這樣產(chǎn)生新的類,稱派生類。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(ch
22、n x sh j)的層次結(jié)構(gòu)。體現(xiàn)了由簡單到復(fù)雜的認識過程。 多態(tài)性(polymorphism)多態(tài)性是考慮在不同層次的類中,以及在同一類中,同名的成員函數(shù)之間的關(guān)系問題。函數(shù)的重載,運算符的重載,屬于編譯時的多態(tài)性。以虛函數(shù)為基礎(chǔ)的運行時的多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(chn x sh j)的標(biāo)志性特征。 體現(xiàn)了類推和比喻的思想方法。第42頁/共74頁第四十二頁,共75頁。派生類的聲明派生類的聲明(shngmng)方式方式 定義(dngy)格式* class 派生類名:訪問限定符 基類名1,訪問限定符 基類名2,訪問限定符 基類名n private: 成員表1; /派生類增加或替代的私有成員 p
23、ublic:成員表2; /派生類增加或替代的公有成員 protected:成員表3; /派生類增加或替代的保護成員 ;/分號不可少第43頁/共74頁第四十三頁,共75頁。繼承繼承(jchng)過程過程編制(binzh)派生類時可分四步 吸收(xshu)基類的成員 改造基類成員 發(fā)展新成員 重寫構(gòu)造函數(shù)與析構(gòu)函數(shù) 不論是數(shù)據(jù)成員,還是函數(shù)成員,除構(gòu)造函數(shù)與析構(gòu)函數(shù)外全盤接收 聲明一個和某基類成員同名的新成員,派生類中的新成員就屏蔽了基類同名成員稱為同名覆蓋(override) 派生類新成員必須與基類成員不同名,它的加入保證派生類在功能上有所發(fā)展。 第44頁/共74頁第四十四頁,共75頁。派生類的
24、構(gòu)成派生類的構(gòu)成(guchng)*第45頁/共74頁第四十五頁,共75頁。繼承繼承(jchng)分類分類基類1基類2基類n派生類1派生類2基類派生類1派生類2(a)多重繼承(jchng) (b)單繼承(jchng) 一個基類可以直接派生出多個派生類 派生類可以由多個基類共同派生出來,稱多重繼承。第46頁/共74頁第四十六頁,共75頁。派生類成員的訪問派生類成員的訪問(fngwn)屬性屬性*第47頁/共74頁第四十七頁,共75頁。 多級派生時的訪問(fngwn)屬性P164 例5.4第48頁/共74頁第四十八頁,共75頁。繼承繼承(jchng)例題例題1在公有繼承的情況(qngkung)下,基類
25、成員在派生類中的訪問權(quán)限 。A受限制 B. 保持不變 C. 受保護 D. 不受保護9.在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是( A ) A.派生類的對象可以(ky)賦給基類的對象 B.派生類的對象可以(ky)初始化基類的引用 C.派生類的對象可以(ky)直接訪問基類中的成員 D.派生類的對象的地址可以(ky)賦給指向基類的指針第49頁/共74頁第四十九頁,共75頁。派生類的構(gòu)造函數(shù)派生類的構(gòu)造函數(shù)(hnsh)和析構(gòu)函數(shù)和析構(gòu)函數(shù)(hnsh)*執(zhí)行派生類構(gòu)造函數(shù)的順序是:調(diào)用基類構(gòu)造函數(shù),初始化基類數(shù)據(jù)成員(chngyun)調(diào)用子對象構(gòu)造函數(shù),初始化子對象數(shù)據(jù)成員(ch
26、ngyun)執(zhí)行派生類構(gòu)造函數(shù),初始化派生類數(shù)據(jù)成員(chngyun)執(zhí)行派生類析構(gòu)函數(shù)的順序是:調(diào)用派生類析構(gòu)函數(shù),清理派生類增加數(shù)據(jù)成員(chngyun)調(diào)用子對象析構(gòu)函數(shù),清理子對象數(shù)據(jù)成員(chngyun)調(diào)用基類析造函數(shù),清理基類數(shù)據(jù)成員(chngyun)第50頁/共74頁第五十頁,共75頁。構(gòu)造函數(shù)構(gòu)造函數(shù)(hnsh)和析構(gòu)函數(shù)和析構(gòu)函數(shù)(hnsh)次序例題次序例題#include using namecpace std;class B1/基類B1聲明(shngmng) public:B1(int i) coutconstructing B1 iendl;B1() coutdest
27、ructing B1 endl;class B2/基類B2聲明(shngmng)public:B2(int j) coutconstructing B2 jendl;B2() coutdestructing B2 endl;class B3/基類B3聲明(shngmng)public:B3()coutconstructing B3 *endl;B3() coutdestructing B3 endl;class C: public B2, public B1, public B3public:C(int a, int b, int c, int d): B1(a),memberB2(d),me
28、mberB1(c),B2(b)private:B1 memberB1;B2 memberB2;B3 memberB3;void main()C obj(1,2,3,4); 第51頁/共74頁第五十一頁,共75頁。constructing B2 2constructing B1 1constructing B3 *constructing B1 3constructing B2 4constructing B3 *destructing B3destructing B2destructing B1destructing B3destructing B1destructing B2第52頁/共74
29、頁第五十二頁,共75頁。派生類構(gòu)造函數(shù)一般形式: 派生類名:派生類名 (總參數(shù)表): 基類名(實參表 ), 子對象(duxing)名(參數(shù)表) 派生類新增成員的初始化語句; 第53頁/共74頁第五十三頁,共75頁。 多層派生時的構(gòu)造函數(shù)(hnsh) P172 例5.7 派生類的析構(gòu)函數(shù)(hnsh) 與構(gòu)造函數(shù)(hnsh)一樣,不能繼承基類的。第54頁/共74頁第五十四頁,共75頁。派生類例題派生類例題(lt)類A與類B都有public數(shù)據(jù)(shj)成員f,類C公有繼承A和B,類C有public數(shù)據(jù)(shj)成員f,類D保護繼承C,d是類D的一個對象,從d訪問類A的成員f的表達式是 。d.A:f
30、 第55頁/共74頁第五十五頁,共75頁。多重繼承多重繼承(jchng) 定義(dngy): class D: public A, private B, protected C 類D新增加的成員 多重繼承派生類的構(gòu)造函數(shù) 派生類構(gòu)造函數(shù)名(總參數(shù)表):基類1構(gòu)造函數(shù)(參數(shù)表),基類2構(gòu)造函數(shù)(參數(shù)表),基類3構(gòu)造函數(shù)(參數(shù)表) 派生類新增成員初始化語句 P176 例5.8第56頁/共74頁第五十六頁,共75頁。多重繼承多重繼承(jchng)的二義性的二義性 在多重繼承時,基類與派生類之間,或基類之間出現(xiàn)同名成員時,將出現(xiàn)訪問時的二義性(不確定性)采用同名隱藏規(guī)則或虛函數(shù)(僅針對成員函數(shù))來解決
31、。 當(dāng)派生類從多個(du )基類派生,而這些基類又從同一個基類派生,則在訪問此共同基類中的成員時,將產(chǎn)生二義性采用虛基類來解決。int a;int a;int a;第57頁/共74頁第五十七頁,共75頁。 虛基類* P185 例5.9class A ;class B: virtual public A ;class C: virtual public A ;第58頁/共74頁第五十八頁,共75頁。 基類與派生類轉(zhuǎn)換(zhunhun)* 大材小用第59頁/共74頁第五十九頁,共75頁。第第6章復(fù)習(xí)章復(fù)習(xí)(fx)要點要點一個接口(ji ku),多種方法多態(tài)性的概念(ginin)第60頁/共74頁第
32、六十頁,共75頁。 靜態(tài)多態(tài) 在編譯程序時系統(tǒng)就可以(ky)確定調(diào)用哪個函數(shù),因此靜態(tài)多態(tài)性又稱編譯時的多態(tài)性。靜態(tài)多態(tài)性是通過函數(shù)重載實現(xiàn)的。 動態(tài)多態(tài) 在程序運行中才能確定操作所針對的對象。它又稱運行時的多態(tài)性。動態(tài)多態(tài)性是通過基類與派生類轉(zhuǎn)換+虛函數(shù)實現(xiàn)的。第61頁/共74頁第六十一頁,共75頁。多態(tài)性例題多態(tài)性例題(lt)C+語言(yyn)中的多態(tài)性分為 時多態(tài)性和運行時的多態(tài)性。編譯(biny) 第62頁/共74頁第六十二頁,共75頁。虛函數(shù)虛函數(shù)(hnsh)* 虛函數(shù)是一個(y )類的成員函數(shù),定義格式如下: virtual 返回類型 函數(shù)名(參數(shù)表); 關(guān)鍵字virtual指明該
33、成員函數(shù)為虛函數(shù)。virtual僅用于類定義中,如虛函數(shù)在類外定義,不可加virtual。 當(dāng)某一個(y )類的一個(y )類成員函數(shù)被定義為虛函數(shù),則由該類派生出來的所有派生類中,該函數(shù)始終保持虛函數(shù)的特征。第63頁/共74頁第六十三頁,共75頁。 當(dāng)在派生類中重新定義虛函數(shù)(overriding a virtual function,亦譯作超載或覆蓋)時,不必(bb)加關(guān)鍵字virtual。但重新定義時不僅要同名,而且它的參數(shù)表和返回類型全部與基類中的虛函數(shù)一樣,否則聯(lián)編時出錯。 虛函數(shù)與改造類成員,同名覆蓋(override)有關(guān):如未加關(guān)鍵字virtual,則是普通的派生類中的新成員函
34、數(shù)覆蓋基類同名成員函數(shù)(當(dāng)然參數(shù)表必須一樣,否則是重載),可稱為同名覆蓋函數(shù),它不能實現(xiàn)運行時的多態(tài)性。第64頁/共74頁第六十四頁,共75頁。 比較(bjio)有虛函數(shù)的override和無虛函數(shù)的override,訪問成員第65頁/共74頁第六十五頁,共75頁。#include class B0public: void display() cout B0:display() endl; ;class B1 : public B0public: void display() cout B1:display() endl; ;class D1 : public B1public: void d
35、isplay() cout D1:display() display (); void main() B0 b0; B1 b1; D1 d1; B0 *p; p = &b0; fun(p); p = &b1; fun(p); p = &d1; fun(p); B0:display()B0:display()B0:display() 第66頁/共74頁第六十六頁,共75頁。#include class B0public: virtual void display() cout B0:display() endl; ;class B1 : public B0public:
36、void display() cout B1:display() endl; ;class D1 : public B1public: void display() cout D1:display() display (); void main() B0 b0; B1 b1; D1 d1; B0 *p; p = &b0; fun(p); p = &b1; fun(p); p = &d1; fun(p); B0:display()B1:display()D1:display() 第67頁/共74頁第六十七頁,共75頁。第68頁/共74頁第六十八頁,共75頁。 虛函數(shù)(hnsh)實現(xiàn)-虛函數(shù)(hnsh)表VPRT(不考)第69頁/共74頁第六十九頁,共75頁。 構(gòu)造函數(shù)不能是虛函
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輕松的年會個人主持稿5篇
- 醫(yī)療廢物無害化處理項目申請報告可行性實施報告
- 電子廢棄物處理機械設(shè)備制造項目可行性研究報告
- 生物體外診斷試劑技改項目可行性研究報告
- 陜西前期物業(yè)服務(wù)合同備案規(guī)定法條
- 商鋪電力安裝合同協(xié)議書
- 銷售部年度工作計劃5篇范文
- 知識產(chǎn)權(quán)價值評估手冊
- 員工宿舍物品存放規(guī)則
- 大型輸變電站預(yù)應(yīng)力施工合同
- 2024廣東佛山市三水海江怡樂建設(shè)投資有限公司招聘筆試參考題庫附帶答案詳解
- 印刷服務(wù)印刷清單一覽表
- 2024年人事行政行業(yè)培訓(xùn)資料
- 2024年云南省第一次高中畢業(yè)生復(fù)習(xí)統(tǒng)一檢測(一模)文科綜合試卷(含官方答案)
- 《認識隸書(一)》名師課件
- 食堂醇基燃料應(yīng)急預(yù)案
- 結(jié)構(gòu)設(shè)計通用規(guī)范(住建部2023年頒布)
- 2023學(xué)年完整公開課版時行程問題
- 性格測試98題-最符合和最不符合答案
- 建筑行業(yè)狀況分析
- 交通運輸系統(tǒng)安全生產(chǎn)治本攻堅三年行動方案
評論
0/150
提交評論