抽象类别的实作.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抽象类别的实作

第十七章 虛擬函數與抽象類別 認識虛擬函數與指向基底類別的指標 認識抽象類別與泛虛擬函數的關係 熟悉抽象類別應用於多層繼承的方式 使用虛擬解構元 虛擬函數 (1/2) 當函數的執行內容現在無法定義,或現在已定義,將來卻可能會被改變,就可以將函數以虛擬函數的方式撰寫 錯誤的範例-由早期連結所引起 虛擬函數 (2/2) 認識虛擬函數 編譯時便把父類別裡的show_area() 和area() 函數連結在一起編譯,這種函數連結的方式稱為早期連結(early binding) 虛擬函數可以與呼叫它的函數進行晚期連結(late binding),也就是於程式執行時才由當時的情況來決定是哪一個函數被呼叫,而非在編譯時就把函數配對 修正使用虛擬函數的錯誤 (1/2) 下面的程式碼是使用虛擬函數來修正錯誤 修正使用虛擬函數的錯誤 (2/2) 指向基底類別物件的指標 (1/2) 指向基底類別的指標,也可指向衍生類別所建立的物件 下面的範例是指向基底類別物件的指標之應用 指向基底類別物件的指標 (2/2) 錯誤的示範 (1/4) 錯誤示範-指向由動態記憶體配置之物件的指標 錯誤的示範 (2/4) 執行結果的圖說 錯誤的示範 (3/4) 讀者可試著在第19行加上下面的敘述 但ptr所指向的物件並未被銷毀 錯誤的示範 (4/4) 下面的範例修正prog17_4的錯誤 泛虛擬函數與抽象類別 「泛虛擬函數」(pure virtual function) 在基底類別裡撰寫虛擬函數,使得子類別必須藉由改寫的技術重新定義虛擬函數,具有這個特性的虛擬函數稱為泛虛擬函數 「抽象類別」(abstract class) 包含有泛虛擬函數的類別稱為抽象類別 定義泛虛擬函數 (1/2) 下圖是由抽象類別CShape衍生出子類別的示意圖 定義泛虛擬函數 (2/2) 下面為CShape基底抽象類別程式碼 抽象類別有點類似「範本」的作用,其目的是要讓您依據它的格式來修改並建立新的類別 抽象類別的實作 下面的程式碼是以子類別CWin為例來撰寫的 抽象類別的完整實例 (1/4) prog17_6是抽象類別實作的完整實例 抽象類別的完整實例 (2/4) 抽象類別的完整實例 (3/4) 抽象類別的完整實例 (4/4) 下圖是抽象類別CShape內,泛虛擬函數的實作示意圖 使用抽象類別的注意事項 抽象類別不能用來直接產生物件 您不能撰寫如下的程式碼 繼承的關係圖 下圖為直接繼承與間接繼承的關係圖 抽象類別與多層繼承 (1/4) 抽象類別也可以應用於多層繼承的架構 抽象類別與多層繼承 (2/4) 抽象類別與多層繼承 (3/4) 抽象類別與多層繼承 (4/4) 錯誤的範例 (1/4) prog17_8是使用解構元的錯誤範例 錯誤的範例 (2/4) 錯誤的範例 (3/4) 錯誤的範例 (4/4) 使用虛擬解構元 (1/2) prog17_9是使用虛擬解構元的範例 使用虛擬解構元 (2/2) 如果程式碼裡有使用抽象類別,可把基底類別的解構元設為virtual,如此可以確保解構元會正確地被呼叫以及釋放記憶空間 17.5 虛擬解構元 17.5 虛擬解構元 * * 17.1 虛擬函數 17.1 虛擬函數 17.1 虛擬函數 17.1 虛擬函數 17.1 虛擬函數 17.2 指向基底類別的指標 17.2 指向基底類別的指標 17.2 指向基底類別的指標 17.2 指向基底類別的指標 17.2 指向基底類別的指標 17.2 指向基底類別的指標 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.3 抽象類別與泛虛擬函數 17.4 抽象類別於多層繼承的應用 17.4 抽象類別於多層繼承的應用 17.4 抽象類別於多層繼承的應用 17.4 抽象類別於多層繼承的應用 17.4 抽象類別於多層繼承的應用 17.5 虛擬解構元 17.5 虛擬解構元 17.5 虛擬解構元 17.5 虛擬解構元

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档