




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精品word 名師歸納總結(jié) - - - - - - - - - - - -C+ Primer第四部分學(xué)習(xí)筆記匯總面對(duì)對(duì)象編程與泛型編程繼承,動(dòng)態(tài)綁定,數(shù)據(jù)抽象,函數(shù)模板C+ Primer 第 15 章學(xué)習(xí)筆記第 15 章:面對(duì)對(duì)象編程面對(duì)對(duì)象編程基于三個(gè)基本概念:數(shù)據(jù)抽象,繼承,動(dòng)態(tài)綁定;用類進(jìn)行數(shù)據(jù)抽象用類派生從一個(gè)類繼承另一個(gè)類:派生類繼承基類成員;動(dòng)態(tài)綁定使編譯器能夠在運(yùn)行時(shí)打算是使用基類中定義的函數(shù)仍是派生類中定義的函數(shù);學(xué)習(xí)摘錄162:繼承與動(dòng)態(tài)綁定的作用:能夠簡潔地定義與其他類相像但又不相同的新類,能夠更簡潔地編寫忽視這些相像類型之間區(qū)分的程序;學(xué)習(xí)摘錄163:多態(tài)性面對(duì)對(duì)象編程的
2、關(guān)鍵思想是多態(tài)性(polymorphism )繼承而相關(guān)聯(lián)的類型為多態(tài)類型;學(xué)習(xí)摘錄164:繼承派生類( derived class)能夠繼承基類(base class)定義的成員派生類可以無須轉(zhuǎn)變而使用那些與派生類型詳細(xì)特性不相關(guān)的操作派生類可以重定義那些與派生類型相關(guān)的成員函數(shù),將函數(shù)特化,考慮派生類型的特性;在 C+中,基類必需指出期望派生類重定義哪些函數(shù),定義為 virtual 的函數(shù)是基類期望派生類重新定義的,基類期望派生類繼承的函數(shù)不能定義為虛函數(shù);學(xué)習(xí)摘錄165:動(dòng)態(tài)綁定( dynamic binding )我們能夠編寫程序使用繼承層次中任意類型的對(duì)象,無須關(guān)懷對(duì)象的詳細(xì)類型;學(xué)
3、習(xí)摘錄166:protected 成員可以認(rèn)為protected 拜訪標(biāo)號(hào)是private 和 public 的混合: 1. 像 private 成員一樣, protected 成員不能被類的用戶拜訪; 2. 像 public 成員一樣, protected 成員可被該類的派生類拜訪;派生類只能通過派生類對(duì)象拜訪其基類的protected成員,派生類對(duì)其基類類型對(duì)象的protected成員沒有特別拜訪權(quán)限;學(xué)習(xí)摘錄167:派生類類型接口簡潔地說:供應(yīng)應(yīng)派生類型接口是protected成員和 public 成員的集合;學(xué)習(xí)摘錄168:派生類為了定義派生類,使用類派生列表(class deriva
4、tion list )指定基類; class classname: access-label base-class這里的access-label是 public 、protected 或 private, base -class 是已定義的類的名字;學(xué)習(xí)摘錄169:派生類和虛函數(shù)精選名師 優(yōu)秀名師 - - - - - - - - - -第 6 頁,共 6 頁 - - - - - - - - - -一旦函數(shù)在基類中聲明為虛函數(shù),它就始終為虛函數(shù),派生類無法轉(zhuǎn)變該函數(shù)為虛函數(shù)這一事實(shí);派生類重定義虛函數(shù)時(shí),可以使用virtual 保留字,但不是必需這樣做;學(xué)習(xí)摘錄170:virtual 與其他成員
5、函數(shù) C+函數(shù)默認(rèn)不使用動(dòng)態(tài)綁定;要觸發(fā)動(dòng)態(tài)綁定,必需滿意兩個(gè)條件:第一,要將成員函數(shù)指定為虛函數(shù);(默認(rèn)的成員函數(shù)都是非虛函數(shù))其次,要通過基類類型的引用或指針進(jìn)行函數(shù)調(diào)用;學(xué)習(xí)摘錄171:靜態(tài)類型與動(dòng)態(tài)類型的概念靜態(tài)類型(static type )在編譯時(shí)可知的引用類型或指針類型;動(dòng)態(tài)類型(dynamic type )指針或引用所綁定的對(duì)象的類型,這是僅在運(yùn)行時(shí)可知的;學(xué)習(xí)摘錄172:C+中的多態(tài)性引用和指針的靜態(tài)類型與動(dòng)態(tài)類型可以不同,這是C+用以支持多態(tài)性的基石;學(xué)習(xí)摘錄173:派生類函數(shù)調(diào)用基類版本只有成員函數(shù)中的代碼才應(yīng)當(dāng)使用作用域操作符掩蓋虛函數(shù)機(jī)制;掩蓋虛函數(shù)機(jī)制,最常見的理由
6、是為了派生類虛函數(shù)調(diào)用基類中的版本;派生類虛函數(shù)調(diào)用基類版本時(shí),必需顯式使用作用域操作符;假如派生類函數(shù)忽視了這樣做,就函數(shù)調(diào)用會(huì)在運(yùn)行時(shí)確定并且將是一個(gè)自身調(diào)用,從而導(dǎo)致無窮遞歸;學(xué)習(xí)摘錄174:繼承與組合定義一作為另一個(gè)類的公用派生類時(shí),派生類應(yīng)反映與基類的“是一種(Is A)”關(guān)系;在書店的例子中,基類表示按規(guī)定價(jià)格銷售的書的概念,Bulk_item 是一種書, 但具有不同的定價(jià)策略;類型之間另一種常見的關(guān)系是稱為“有一個(gè)Has A”的關(guān)系;書店的例子的類具有價(jià)格和ISBN.學(xué)習(xí)摘錄175:友元關(guān)系與繼承基類或派生類可以使其他類或函數(shù)成為友元;友元可以拜訪類的private 和 prot
7、ected 數(shù)據(jù);友元關(guān)系不能繼承;學(xué)習(xí)摘錄176:轉(zhuǎn)換與繼承每個(gè)派生類對(duì)象包含一個(gè)基類部分;可以將派生類對(duì)象的引用轉(zhuǎn)換為基類子對(duì)象的引用,對(duì)指針也類似;沒有從基類引用(或基類指針)到派生類引用(或派生類指針)的(自動(dòng))轉(zhuǎn)換;沒有從派生類型對(duì)象到基類類型對(duì)象的直接轉(zhuǎn)換;第四節(jié):構(gòu)造函數(shù)和復(fù)制掌握構(gòu)造函數(shù)和復(fù)制掌握成員不能繼承,每個(gè)類定義自己的構(gòu)造函數(shù)和復(fù)制掌握成員;學(xué)習(xí)摘錄177:合成的派生類默認(rèn)構(gòu)造函數(shù)派生類的合成默認(rèn)構(gòu)造函數(shù)與非派生的構(gòu)造函數(shù)只有一點(diǎn)不同:除了初始化派生類的數(shù)據(jù)成員外,仍要初始化派生類對(duì)象的基類部分;基類部分由基類的默認(rèn)構(gòu)函數(shù)初始化;學(xué)習(xí)摘錄178:派生類的構(gòu)造次序構(gòu)造函數(shù)
8、初始化列表為類的基類和成員供應(yīng)初始值,它并不指定初始化的執(zhí)行次序;第一初始化基類,然后依據(jù)聲明次序初始化派生類的成員;學(xué)習(xí)摘錄179:只能初始化直接基類一個(gè)類只能初始化自己的直接基類;(直接基類就是在派生列表中指定的類;)假如類從類派生,類從類派生,那是的直接基類;學(xué)習(xí)摘錄180:重構(gòu)( refactioring )重構(gòu)包括重新定義類層次,將操作和/ 或數(shù)據(jù)從一個(gè)類移到另一個(gè)類;為了適應(yīng)應(yīng)用程序的需要而重新設(shè)計(jì)類以便增加新函數(shù)或處理其他轉(zhuǎn)變時(shí),最有可能需要進(jìn)行重構(gòu);然而,對(duì)類進(jìn)行重構(gòu),或以任意其他方式轉(zhuǎn)變類,使用這些類的任意代碼都必需重新編譯;學(xué)習(xí)摘錄181:敬重基類接口構(gòu)造函數(shù)只能初始化其直
9、接基類的緣由是每個(gè)類都定義了自己的接口;一旦定義了自己的接口,與該類對(duì)象的全部交互都應(yīng)當(dāng)通過接口;學(xué)習(xí)摘錄182:定義派生類復(fù)制構(gòu)造函數(shù)假如派生類顯式定義自己的復(fù)制構(gòu)造函數(shù)或賦值操作符,就該定義將完全掩蓋默認(rèn)定義;被繼承類的復(fù)制構(gòu)造函數(shù)和賦值操作符負(fù)責(zé)對(duì)基類成分以及類自己的成員進(jìn)行復(fù)制或賦值;學(xué)習(xí)摘錄183:派生類析構(gòu)函數(shù)析構(gòu)函數(shù)的工作與復(fù)制構(gòu)函數(shù)和賦值操作符不同:派生類析構(gòu)函數(shù)不負(fù)責(zé)撤銷基類對(duì)象的成員;每個(gè)析構(gòu)函數(shù)只負(fù)責(zé)清除自已的成員,對(duì)象的撤銷次序與構(gòu)造次序相反:第一運(yùn)行派生類析構(gòu)函數(shù),然后按繼承層次依次向上調(diào)用各基類析造函數(shù);假如析構(gòu)函數(shù)為虛函,那么通過指針調(diào)用時(shí),運(yùn)行哪個(gè)析構(gòu)函數(shù)將因指
10、針?biāo)笇?duì)象類型的不同而不同;即使析構(gòu)函數(shù)沒有工作要做,繼承層次的根類也應(yīng)當(dāng)定義一個(gè)虛件構(gòu)函數(shù);學(xué)習(xí)摘錄184:構(gòu)造函數(shù)和賦值操作符不是虛函數(shù)在復(fù)制掌握成員中,只有析構(gòu)函數(shù)應(yīng)定義為虛函數(shù),構(gòu)造函數(shù)不能定義為虛函數(shù);將類的賦值操作符設(shè)為虛函數(shù)很有可能會(huì)令人混淆,而且不會(huì)有什么好處;第五節(jié):繼承情形下的類作用域在繼承情形下,派生類的作用域嵌套在基類作用域中;假如不能在派生類作用域中確定名字,就在外圍基類作用域查找該名字的定義;學(xué)習(xí)摘錄185:名字沖突與繼承與基類成員同名的派生類成員將屏蔽對(duì)基類成員的直接拜訪;可以使用作用域操作符拜訪被屏蔽的基類成員;學(xué)習(xí)摘錄186:純虛函數(shù)含有(或繼承)一個(gè)或多個(gè)純
11、虛函數(shù)的類是抽象基類(abstract base class);除了作為抽象基類的派生類的對(duì)象的組成部分,不能創(chuàng)建抽象類型的對(duì)象;學(xué)習(xí)摘錄187:容器與繼承由于派生類對(duì)象在賦值給基類對(duì)象時(shí)會(huì)被“切掉”,所以容器與通過繼承相關(guān)的類型不能很好地融合;第八節(jié):句柄類與繼承 C+中面對(duì)對(duì)象編程中一個(gè)頗具諷刺意味的地方是,不能使用對(duì)象支持面對(duì)對(duì)象編程,相反,必需使用指針或引用;學(xué)習(xí)摘錄188:定義包裝類和句柄類 C+中一個(gè)通用的技術(shù)是定義包裝(cover)類或句柄(handle)類;句柄類,儲(chǔ)備和治理基類指針;指針?biāo)笇?duì)象的類型可以變化,它既可以指向基類類型對(duì)象又可以指向派生類型對(duì)象;學(xué)習(xí)摘錄189:包
12、裝了繼承層次的句柄有兩個(gè)重要的設(shè)計(jì)考慮因素: 1. 像對(duì)任何儲(chǔ)存指針的類一樣,必需確定對(duì)復(fù)制掌握做些什么; 2. 句柄類打算句柄接口屏蔽仍是不屏蔽層次,假如不屏蔽層次,用戶必需明白和使用基本層次中的對(duì)象;C+ Primer 第 16 章學(xué)習(xí)筆記第 16 章:模板與泛型編程泛型編程,就是以獨(dú)立于任何特定類型的方式編寫代碼;使用泛型程序時(shí),我們需要供應(yīng)詳細(xì)程序?qū)嵗僮鞯念愋突蛑?;學(xué)習(xí)摘錄190:補(bǔ)充概念:多態(tài)性面對(duì)對(duì)象編程所依靠的多態(tài)性稱為運(yùn)行時(shí)多態(tài)性;泛型編程所依靠的多態(tài)稱為編譯時(shí)多態(tài)性或參數(shù)式多態(tài)性;學(xué)習(xí)摘錄191:定義函數(shù)模板函數(shù)模板(functiontemplate )是一個(gè)獨(dú)立于類型的
13、函數(shù),可作為一種方式,產(chǎn)生函數(shù)的特定類型的版本;模板定義以關(guān)鍵字template 開頭,后接模板形參表(template parameter list ) ;模板形參表是用尖括號(hào)括住的一個(gè)或多個(gè)模板形參(template parameter )的列表;模板形參表不能為空;學(xué)習(xí)摘錄192:使用函數(shù)模板實(shí)例化產(chǎn)生模板的特定類型的過程稱為實(shí)例化;要進(jìn)行實(shí)例化,編譯器必需能夠拜訪定義模板的源代碼;使用函數(shù)模板時(shí),編譯器會(huì)推斷哪個(gè)模板實(shí)參綁定到模板形參;一旦編譯器確定了實(shí)際的模板實(shí)參,就稱它為實(shí)例化(instantiate )了函數(shù)模板的一個(gè)實(shí)例;學(xué)習(xí)摘錄193:typename 與 class 的區(qū)分
14、在函數(shù)模板形參中,關(guān)鍵字typename 和 class 相同含義,可互用,只有有時(shí)候typename 比 class 要直觀;學(xué)習(xí)摘錄194:鏈接時(shí)的編譯時(shí)錯(cuò)誤編譯模板時(shí),編譯器可能會(huì)在三個(gè)階段中標(biāo)識(shí)錯(cuò)誤: 1. 第一階段是編譯模板定義本身時(shí);一般的語法錯(cuò)誤類的; 2. 其次階段時(shí)在編譯器見到模板的使用時(shí),檢查實(shí)參加形參是否相對(duì)映; 3. 第三階段是在實(shí)例化時(shí),只有在這個(gè)時(shí)候可以發(fā)覺類型相關(guān)的錯(cuò)誤;學(xué)習(xí)摘錄195:類模板中的友元聲明 1. 一般非模板類或函數(shù)的友元聲明,將友元關(guān)系授予明確指定的類或函數(shù); 2. 類模板或函數(shù)模板的友元聲明,授予對(duì)友元全部實(shí)例的拜訪權(quán); 3. 只授予對(duì)類模板或函
15、數(shù)模板的特定實(shí)例的拜訪權(quán)的友元聲明;如:template<typename Type> class Bar/ grants access to ordinary, nontemplate class and function friend class FooBar;friend void fcn; FooBar 的成員和fcn 函數(shù)可以拜訪Bar 類任意實(shí)例的private 成員和 protected 成員;摘錄有想 195:假如類要在類中使用,那么,要在類中對(duì)進(jìn)行友元聲明;友元聲明不是在需要使用類時(shí)才聲明調(diào)用,而是在需要使用到的類中先聲明;學(xué)習(xí)摘錄196:成員模板任意類(模板或非
16、模板)可以擁有本身為類模板或函數(shù)模板的成員,這種成員稱為成員模板(member template ),成員模板不能為虛;第六節(jié):模板特化模板特化是指一個(gè)或多個(gè)模板形參的實(shí)際類型或?qū)嶋H值是指定的;學(xué)習(xí)摘錄197:模板特化轉(zhuǎn)換方式 template <> int compare <const char*> const char* const & v1, const char* const &v2;當(dāng)調(diào)用compare 函數(shù)的時(shí)候,傳給它兩個(gè)字符指針,編譯器將調(diào)用特化版本;學(xué)習(xí)摘錄198:一般作用域規(guī)章適用于特化當(dāng)編譯器看到一個(gè)函數(shù)調(diào)用時(shí),它必需知道這個(gè)版本需要特化,否就,編譯器可能從模板定義實(shí)例化該函數(shù);對(duì)于具有同一模板實(shí)參集的同一模板,程序不能既有顯式特化又有實(shí)例化;學(xué)習(xí)摘錄199:顯式模板實(shí)參顯式模板實(shí)參使我們能固定一個(gè)或多個(gè)模板形參的類型或值;顯式實(shí)參使我們能夠設(shè)計(jì)無需從對(duì)應(yīng)實(shí)參推斷模板類型的函數(shù),也使我們能夠?qū)?shí)參進(jìn)行轉(zhuǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年射頻消融治療儀項(xiàng)目合作計(jì)劃書
- 2025年P(guān)M步進(jìn)電機(jī)合作協(xié)議書
- 含稅金額合同范本
- 動(dòng)遷房的買賣合同范本
- 外籍工作人員聘請(qǐng)合同范本
- 綠化養(yǎng)護(hù)及道路保潔服務(wù)合同范本
- 關(guān)于英語合同范本
- 介紹公司合同范本
- 二包服務(wù)合同范本
- 臨時(shí)設(shè)施合同范本
- 管道工程預(yù)算
- 公路施工技術(shù)ppt課件(完整版)
- 通信原理英文版課件:Ch6 Passband Data Transmission
- GB∕T 41098-2021 起重機(jī) 安全 起重吊具
- 如何發(fā)揮好辦公室協(xié)調(diào)、督導(dǎo)、服務(wù)職能
- 部隊(duì)安全教育教案大全
- HY∕T 0289-2020 海水淡化濃鹽水排放要求
- 班組長管理能力提升培訓(xùn)(PPT96張)課件
- 法蘭蝶閥螺栓配用表
- 垃圾中轉(zhuǎn)站施工方案及施工方法
- 內(nèi)蒙古自治區(qū)小額貸款公司試點(diǎn)管理實(shí)施細(xì)則
評(píng)論
0/150
提交評(píng)論