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

正文內(nèi)容

清華大學(xué)c課件第8章-資料下載頁

2024-10-16 13:37本頁面
  

【正文】 Derived2::fun2() endl。 } }。 49 深 度 探 索 void fun(Base *b) { bfun1()。 //嘗試將 b轉(zhuǎn)換為 Derived1指針 Derived1 *d = dynamic_castDerived1 *(b)。 //判斷轉(zhuǎn)換是否成功 if (d != 0) dfun2()。 } int main() { Base b。 fun(amp。b)。 Derived1 d1。 fun(amp。d1)。 Derived2 d2。 fun(amp。d2)。 return 0。 } 運行結(jié)果: Base::fun1() Derived1::fun1() Derived1::fun2() Derived2::fun1() Derived2::fun2() 50 C++語言程序設(shè)計 清華大學(xué) 鄭莉 typeid的使用 ? 語法形式 – typeid ( 表達式 ) – typeid ( 類型說明符 ) ? 功能 – 獲得表達式或類型說明符的類型信息 ? 表達式有多態(tài)類型時,會被求值,并得到動態(tài)類型信息; ? 否則,表達式不被求值,只能得到靜態(tài)的類型信息。 – 類型信息用 type_info對象表示 ? type_info是 typeinfo頭文件中聲明的類; ? typeid的結(jié)果是 type_info類型的常引用; ? 可以用 type_info的重載的“ ==”、“ !=”操作符比較兩類型的異同; ? type_info的 name成員函數(shù)返回類型名稱,類型為 const char *。 51 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 例 810 typeid示例 include iostream include typeinfo using namespace std。 class Base { public: virtual ~Base() { } }。 class Derived: public Base { }。 52 深 度 探 索 void fun(Base *b) { //得到表示 b和 *b類型信息的對象 const type_info amp。info1 = typeid(b)。 const type_info amp。info2 = typeid(*b)。 cout typeid(b): () endl。 cout typeid(*b): () endl。 if (info2 == typeid(Base)) //判斷 *b是否為 Base類型 cout A base class! endl。 } int main() { Base b。 fun(amp。b)。 Derived d。 fun(amp。d)。 return 0。 } 運行結(jié)果: typeid(b): class Base * typeid(*b): class Base A base class! typeid(b): class Base * typeid(*b): class Derived 53 C++語言程序設(shè)計 清華大學(xué) 鄭莉 虛函數(shù)動態(tài)綁定的實現(xiàn)原理 ? 動態(tài)選擇被執(zhí)行的函數(shù) – 函數(shù)的調(diào)用,需要通過函數(shù)代碼的入口地址 – 把函數(shù)入口地址作為變量,在不同情況下賦予不同的值, 通過該變量調(diào)用函數(shù),就可動態(tài)選擇被執(zhí)行的函數(shù) ? 回顧:第 6章介紹的函數(shù)指針、指向成員函數(shù)的指針 ? 虛表 – 每個多態(tài)類有一個虛表( virtual table) – 虛表中有當前類的各個虛函數(shù)的入口地址 – 每個對象有一個指向當前類的虛表的指針(虛指針 vptr) ? 動態(tài)綁定的實現(xiàn) – 構(gòu)造函數(shù)中為對象的虛指針賦值 – 通過多態(tài)類型的指針或引用調(diào)用成員函數(shù)時,通過虛指針找到虛表,進而找到所調(diào)用的虛函數(shù)的入口地址 – 通過該入口地址調(diào)用虛函數(shù) 54 深 度 探 索 55 指向 f()的指針 指向 g()的指針 Base的虛表 指向 f()的指針 指向 g()的指針 指向 h()的指針 Derived的虛表 (Base::f的代碼 ) push %ebp mov %esp,%ebp …… (Base::g的代碼 ) push %ebp mov %esp,%ebp …… (Derived::f的代碼 ) push %ebp mov %esp,%ebp …… (Derived::h的代碼 ) push %ebp mov %esp,%ebp …… i vptr i vptr j Base類型對象 Derived類型對象 class Base { public: virtual void f()。 virtual void g()。 private: int i。 }。 class Derived: public Base { public: virtual void f()。 //覆蓋 Base::f virtual void h()。 //新增的虛函數(shù) private: int j。 }。 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 56 小結(jié)與復(fù)習(xí)建議 ? 主要內(nèi)容 –多態(tài)性的概念、運算符重載、虛函數(shù)、純虛函數(shù)、抽象類 ? 達到的目標 –理解多態(tài)的概念,學(xué)會運用多態(tài)機制。 ? 實驗任務(wù) –實驗八
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1