freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

第八章多態(tài)性-閱讀頁

2024-08-20 13:22本頁面
  

【正文】 中有兩種多態(tài)性 編譯時的多態(tài)性 運行時的多態(tài)性 運行時的多態(tài)性是指在程序執(zhí)行前,無法根據(jù)函數(shù)名和參數(shù)來確定該調用哪一個函數(shù),必須在程序執(zhí)行過程中,根據(jù)執(zhí)行的具體情況來動態(tài)地確定。 目的也是建立一種通用的程序 。 通過函數(shù)的重載和運算符的重載來實現(xiàn)的。 在某個基類上建立起來的類的層次構造中,可以對任何一個派生類的對象中的同名過程進行調用,而被調用的過程提供的處理可以隨其所屬的類而變。 C++語言程序設計 47 虛函數(shù) ? 虛函數(shù)是動態(tài)綁定的基礎。 ? 在類的聲明中,在函數(shù)原型之前寫 virtual。 ? 具有繼承性,基類中聲明了虛函數(shù),派生類中無論是否說明,同原型函數(shù)都自動為虛函數(shù)。 ? 調用方式:通過基類指針或引用,執(zhí)行時會 根據(jù) 指針指向的對象的類 ,決定調用哪個函數(shù)。 virtual僅用于類定義中,如虛函數(shù)在類外定義,不可加virtual。 當在派生類中重新定義虛函數(shù)( overriding a virtual function,亦譯作超載或覆蓋)時,不必加關鍵字 virtual。 C++語言程序設計 49 一個類中將所有的成員函數(shù)盡可能地設置為虛函數(shù)總是有好處的,但必須注意以下幾條: 1. 派生類中定義虛函數(shù)必須與基類中的虛函數(shù)同名外,還必須同參數(shù)表,同返回類型。如 基類中返回基類指針,派生類中返回派生類指針是允許的, 這是一個例外。這是因為虛函數(shù)僅適用于有繼承關系的類對象。 4. 一個類對象的靜態(tài)和動態(tài)類型是相同的,實現(xiàn)動態(tài)多態(tài)性時,必須使用基類類型的指針變量或引用,使該指針指向該基類的不同派生類的對象,并通過該指針指向虛函數(shù),才能實現(xiàn)動態(tài)的多態(tài)性。 C++語言程序設計 50 6. 析構函數(shù)可定義為虛函數(shù),構造函數(shù)不能定義虛函數(shù),因為在構造函數(shù)時對象還沒有完成實例化。 7. 函數(shù)執(zhí)行速度要稍慢一些。所以多態(tài)性總是要付出一定代價,但通用性是一個更高的目標。正確的定義必須不包括 virtual。我們總是要求將類設計成通用的,無論其他程序員怎樣調用都必須保證不出錯,所以必須把析構函數(shù)定義為虛函數(shù)。 C++語言程序設計 51 二、 虛函數(shù)的定義與派生類中的重定義 ? class 類名 ? { public: virtual 成員函數(shù)說明; } ? class 類名:基類名 ? { public: virtual 成員函數(shù)說明; } C++語言程序設計 52 ? 可以讓成員函數(shù)操作一般化,用基類的指針指向不同的派生類的對象時,基類指針調用其虛成員函數(shù),則會調用其真正指向對象的成員函數(shù),而不是基類中定義的成員函數(shù)(只要派生類改寫了該成員函數(shù))。 (第七章 通用顯示程序的幻想 例子 74) C++語言程序設計 53 例 84 include iostream using namespace std。} }。 } }。 } }。 } int main() //主函數(shù) { B0 b0, *p。 //聲明派生類對象 D1 d1。b0。 //調用基類 B0函數(shù)成員 p=amp。 fun(p)。d1。 //調用派生類 D1函數(shù)成員 } 運行結果: B0::display() B1::display() D1::display() 54 C++語言程序設計 55 虛析構函數(shù) 何時需要虛析構函數(shù)? ? 當你可能通過基類指針刪除派生類對象時 ? 如果你打算允許其他人通過基類指針調用對象的析構函數(shù)(通過 delete這樣做是正常的),并且被析構的對象是有重要的析構函數(shù)的派生類的對象,就需要讓基類的析構函數(shù)成為虛擬的。它用于這樣的情況:定義一個基類時,會遇到無法定義基類中虛函數(shù)的具體實現(xiàn),其實現(xiàn)依賴于不同的派生類。純虛函數(shù)沒有實現(xiàn)部分,不能產生對象,所以含有純虛函數(shù)的類是抽象類。即使是函數(shù)體為空也不可以,函數(shù)體為空就可以執(zhí)行,只是什么也不做就返回。 2 “=0”表明程序員將不定義該函數(shù),函數(shù)聲明是為派生類保留一個位置。 3 在派生類中必須有重新定義的純虛函數(shù)的函數(shù)體,這樣的派生類才能用來定義對象。 //純虛函數(shù) ... } 純虛函數(shù)與抽象類 C++語言程序設計 58 抽象類 純虛函數(shù)與抽象類 ? 作用 – 抽象類為抽象和設計的目的而聲明,將有關的數(shù)據(jù)和行為組織在一個繼承層次結構中,保證派生類具有要求的行為。 ? 注意 – 抽象類只能作為基類來使用。 – 構造函數(shù)不能是虛函數(shù),析構函數(shù)可以是虛函數(shù)。 class B0 //抽象基類 B0聲明 { public: //外部接口 virtual void display( )=0。 class B1: public B0 //公有派生 { public: void display(){coutB1::display()endl。 class D1: public B1 //公有派生 { public: void display(){coutD1::display()endl。 void fun(B0 *ptr) //普通函數(shù) { ptrdisplay()。 //聲明抽象基類指針 B1 b1。 //聲明派生類對象 p=amp。 fun(p)。d1。 //調用派生類 D1函數(shù)成員 } 運行結果: B1::display() D1::display() 60 C++語言程序設計 61 小結與復習建議 ? 主要內容 –多態(tài)性的概念、運算符重載、虛函數(shù)、純虛函數(shù)、抽象類 ? 達到的目標 –理解多態(tài)的概念,學會運用多態(tài)機制
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1