版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 之所以成通過繼承而相關(guān)聯(lián)的類型為多態(tài)類型,是因?yàn)樵S多情 況下可以互換地使用派生類型或基類型的許多形態(tài)。 在 c+ 中, 多態(tài)性僅應(yīng)用于通過繼承而相關(guān)聯(lián)的 類型的引用或指針。 2. 在 C+ 中,通過基類的引用(或指針)調(diào)用虛函數(shù)時(shí),發(fā) 生動(dòng)態(tài)綁定 。引用(或指針)既可以指向基類對(duì)象也可以指 向派生類對(duì)象 ,這一事實(shí)是動(dòng)態(tài)綁定的關(guān)鍵。用引用(或指 針)調(diào)用的虛函數(shù)在運(yùn)行時(shí)確定,被調(diào)用的函數(shù)是引用(或 指針)所指對(duì)象的實(shí)際類型所定義的。 3. 基類要定義虛析構(gòu)函數(shù) 4. 除了構(gòu)造函數(shù)以外任意非 static 函數(shù)都可以是虛函數(shù)。派生 類不能訪問基類的 private 成員。 Protecte
2、d 成員能被派生 類的成員函數(shù)訪問不能被友元訪問 。 5. 派生類中虛函數(shù)的聲明必須與基類中的定義方式完全匹配,但 有一個(gè)例外:返回對(duì)基類型的引用(指針)的虛函數(shù), 派生類 中的虛函數(shù)可以返回基類函數(shù)所返回類型的派生類的引用(指 針)。 6. 動(dòng)態(tài)綁定的兩個(gè)條件: 1 虛函數(shù) 2 用基類的引用或者指針進(jìn) 行調(diào)用。 只有成員函數(shù) 中的代碼才能通過作用域操作符覆蓋 虛函數(shù)機(jī)制。 覆蓋很多時(shí)候因?yàn)楹芏嗯缮愐韧瓿苫惏?本中的工作再額外完成其他工作。 派生類版本的虛函數(shù)調(diào)用 基類版本時(shí)必須指定作用域, 不然會(huì)遞歸! 7. 在同一虛函數(shù)的基類版本和派生版本中使用不同的默認(rèn)實(shí)參幾 乎一定會(huì)引起麻煩。如
3、果通過引用或者指針調(diào)用虛函數(shù),但在 實(shí)際執(zhí)行的是派生類中定義的版本,這時(shí)就肯能會(huì)出現(xiàn)問題。 此時(shí),為虛函數(shù)的基類版本定義的默認(rèn)實(shí)參將傳給派生類定義 的版本,而派生類版本是用不同的默認(rèn)實(shí)參定義的。 8. 每個(gè)類控制它所定義的成員的訪問。派生類可以進(jìn)一步限制 但不能放松對(duì)繼承的成員的訪問。訪問列表中的訪問標(biāo)號(hào)決 定。 公有繼承:基類的成員保持原有的屬性。 保護(hù)繼承: 基類的非私有成員均為保護(hù)成員。私有繼承:基類的非私有 成員均為私有。可以在派生類中使用 using 命令(在 public 里聲明 using abc:size 可以把 size 恢復(fù)成 public )使得它 重新變?yōu)楣?/ 保護(hù)
4、,關(guān)鍵在于訪問級(jí)別。 Class 默認(rèn)私有繼 承, struct 默認(rèn)公有繼承 9. 友元不會(huì)被繼承。不管怎么繼承 static 成員只有一個(gè)實(shí)例,如 果在基類里面是 private 則不會(huì)被訪問。 10. 訪問方式: 1 基類:成員名。 2 派生類:成員名 3 對(duì)象 引用指針 4 直接用成員名 11. 派生類的引用和指針到基類可以自動(dòng)轉(zhuǎn)換;反過來沒有自動(dòng)轉(zhuǎn) 換。嚴(yán)格來說對(duì)象沒有轉(zhuǎn)換,但是可以用派生類的對(duì)象來初始 化和賦值基類對(duì)象。將派生類的對(duì)象傳遞給希望接受基類引用 的函數(shù),實(shí)際上式傳遞引用,對(duì)象沒有變。如果將它傳遞給接 受對(duì)象的函數(shù),則復(fù)制基類部分。對(duì)派生類對(duì)基類對(duì)象進(jìn)行初 始化復(fù)制:1
5、顯示定義復(fù)制構(gòu)造函數(shù) 2 定義構(gòu)造函數(shù) / 復(fù)制操作 符 ;以上方法并不常見, 基類一般確定自己的賦值操作符和構(gòu)造 函數(shù)(傳遞 const 引用,大家都可以用)注意:訪問標(biāo)號(hào)。 用 base 指針指向 derived 對(duì)象,再用此指針給另外 derived 指 針賦值需要顯示強(qiáng)制類型轉(zhuǎn)換。 12. 派生類的默認(rèn)構(gòu)造函數(shù)將調(diào)用基類的構(gòu)造函數(shù) 。如果派生類 顯示定義自己的復(fù)制構(gòu)造函數(shù)或復(fù)制操作符, 則該定義將完 全覆蓋默認(rèn)定義 。被繼承類的復(fù)制構(gòu)造函數(shù)和賦值操作符負(fù) 責(zé)對(duì)基類成分及類自己的成員進(jìn)行復(fù)制或復(fù)制。 如果派生類 定義了自己的復(fù)制構(gòu)造函數(shù),該函數(shù)一般 顯示使用基類復(fù)制 構(gòu)造函數(shù)初始化基類部
6、分 ,如果不這樣做很可能用默認(rèn)構(gòu)造 函數(shù)初始化基類部分。 賦值操作符首先確保避免自身賦值, 然后調(diào)用基類的賦值操作符。 13. class Bulk_item : public Item_base public: Bulk_item( const std:string& book, double sales_price , 在派生類構(gòu)造函數(shù)參數(shù)列表中不能直接初始化基 類(設(shè)置默認(rèn)參數(shù) ) std:size_t qty = 0, double disc_rate = 0.0): Item_base(book, sales_price), 可以把基類 包含在初始化列表中,將參數(shù)傳遞給基類構(gòu)
7、造函數(shù) min _qty(qty), disco un t(disc_rate) ; 14. 尊重基類接口,在派生類中使用接口,不要直接在構(gòu)造函數(shù) 中對(duì)基類成員賦值 15. 每個(gè)析構(gòu)函數(shù)負(fù)責(zé)刪除自己的成員。如果在構(gòu)造函數(shù)或析構(gòu)函 數(shù)中調(diào)用虛函數(shù),則運(yùn)行的是為構(gòu)造函數(shù)或析構(gòu)函數(shù)自身類型 定義的版本。(在基類的構(gòu)造函數(shù)或析構(gòu)函數(shù)中調(diào)用的虛函數(shù) 是該函數(shù)的基類版本) 16. 基類一定要有虛的析構(gòu)函數(shù),因?yàn)榭赡軙?huì)刪除指向派生類的 基類指針。 17與基類同名的派生類成員將屏蔽對(duì)基類成員的直接訪問,如果 需要訪問基類成員需要用作用域標(biāo)示符。盡量避免使用同名的 成員。函數(shù)也會(huì)屏蔽即使原型不同。 想要在派生類
8、中重新定義 在基類中重載過的函數(shù)的一個(gè)特殊版本,用 using 把函數(shù)名復(fù) 制過來,再重載特殊版本。 18.函數(shù)調(diào)用過程: .首先確定進(jìn)行函數(shù)調(diào)用的對(duì)象、引用或指針的靜態(tài)類型。 *再該類型中查找函數(shù),如果找不到,就在直接基類中查找, 如此遵循著類的繼承往上找,知道找到該函數(shù)或者查找完最 后一個(gè)類。如果不能在類或其相關(guān)基類中找到該類的名字, 則調(diào)用錯(cuò)誤的。 一旦找到了該名字,就進(jìn)行常規(guī)的類型檢查,查看如果給定找 到的定義,該函數(shù)調(diào)用是否合法。 .假定函數(shù)調(diào)用合法,編譯器就生成代碼。如果函數(shù)是虛函數(shù) 且通過引用或指針調(diào)用,則編譯器生成代碼以確定根據(jù)對(duì)象 的動(dòng)態(tài)類型運(yùn)行哪個(gè)函數(shù)版本,否則,直接生成代
9、碼調(diào)用函 數(shù)。 1. 虛函數(shù)的重定義要求參數(shù)列表一致(可以默認(rèn)形參不同,對(duì)對(duì) 象的 con st 不同(后面),返回值相同(例外是基類返回基類 的指針或引用,派生類返回派生類的指針或引用)。 含有一 個(gè)或多個(gè)純虛函數(shù)的類是抽象基類,不能創(chuàng)建對(duì)象。 2. 句柄:是封裝了指向?qū)ο蠛椭赶蛴?jì)數(shù)器指針的類,它綁定對(duì) 象以后可以幫助對(duì)象完成后臺(tái)的操作。代碼使用句柄將不用 管理對(duì)象的指針,但是仍然可以獲得通過 Sales_item 對(duì)象 進(jìn)行的調(diào)用的虛行為。在一個(gè)類中封裝了其他類需要 tyepdef 其類成員比便用戶使用。 3. class Sales_item public: / default con
10、structor: unbound han dle Sales_item(): p(0), use (new std:size_t(1) / attaches a han dle to a copy of the Item_base object Sales_item(c onst Item_base&); / copy control members to manage the use count and pointers Sales_item(const Sales_item &i): p(i.p), use(i.use) +*use; Sales_item() decr_
11、use(); Sales_item& operator=(const Sales_item&); / member access operators const Item_base *operator-() const if (p) return p; else throw std:logic_error(unbound Sales_item); 重截 - 可以讓智能指針直接訪問對(duì)象成員 const Item_base &operator*() const if (p) return *p; else throw std:logic_error(unbound Sales_item); private: Item_base *p; / pointer to shared item std:size_t *use; / pointer to shared use count / called by both destructor and assignment operator to free pointers v
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 助理工程師年終工作總結(jié)15篇
- 2025年安防電子項(xiàng)目提案報(bào)告
- 2024-2025學(xué)年西藏日喀則地區(qū)康馬縣數(shù)學(xué)三年級(jí)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 2025年VSAT網(wǎng)絡(luò)管理系統(tǒng)項(xiàng)目提案報(bào)告模范
- 2025年混凝土泵車項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 愛國(guó)主義演講稿三分鐘
- 會(huì)計(jì)類自薦信范文集合七篇
- 感恩父母的演講稿范文集錦八篇
- 寫景的作文300字集合8篇
- 你的名字動(dòng)畫電影觀看感想
- 【企業(yè)杜邦分析國(guó)內(nèi)外文獻(xiàn)綜述6000字】
- 2023-2024學(xué)年浙江省富陽市小學(xué)數(shù)學(xué)五年級(jí)上冊(cè)期末通關(guān)試題
- GB/T 5343.2-2007可轉(zhuǎn)位車刀及刀夾第2部分:可轉(zhuǎn)位車刀型式尺寸和技術(shù)條件
- GB/T 32285-2015熱軋H型鋼樁
- 中考數(shù)學(xué)真題變式題庫(kù)
- FZ/T 91019-1998染整機(jī)械導(dǎo)布輥制造工藝規(guī)范
- 主持人培訓(xùn) 課件
- SHSG0522003 石油化工裝置工藝設(shè)計(jì)包(成套技術(shù))內(nèi)容規(guī)定
- 制造部年終總結(jié)報(bào)告課件
- 企業(yè)大學(xué)商學(xué)院建設(shè)方案
- 粵科版高中通用技術(shù)選修1:電子控制技術(shù)全套課件
評(píng)論
0/150
提交評(píng)論