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

正文內(nèi)容

c程序設計教程:第9章-多態(tài)性和虛-wenkub.com

2024-10-02 16:15 本頁面
   

【正文】 } ⑤ 寫出實驗報告 。 Display(amp。 Shape* p=amp。 cout(),()endl。使用重載技術設計這個函數(shù),其參數(shù)分別為指針和引用。 3. 虛函數(shù)不能用于聯(lián)合 因為聯(lián)合在特定的時刻只有一個數(shù)據(jù)成員處于 “ 激活 ”狀態(tài),所以在聯(lián)合中也不能說明虛函數(shù)。 //輸出 Call C pc f( )。 pc = amp。 pa = amp。} }。} }。 多重繼承與虛函數(shù) 多重繼承可以被視為多個單一繼承的組合,因此,分析多重繼承情況下的虛函數(shù)調(diào)用與分析單一繼承有相似之處。 } 程序輸出結果如下: s[0]=16 s[1]=9 s[2]=18 s[3]=36 s[4]= The total area is: ? shape類中的虛函數(shù) area僅起到為派生類提供一個一致的接口的作用,派生類中重定義的 area用于決定以什么樣的方式計算面積。 i5。 s[2]=new rectangle(3,6)。 } include iostream using namespace std。 for(int i=0。 }}。 }}。 public: square(double i) { H=i。 【 例 】 編寫一個程序,用于計算正方形、矩形、直角三角形和圓的總面積。 ? 抽象類的這一特點保證了進入類等級的每個類都具有(提供)純虛函數(shù)所要求的行為,這保證了圍繞這個類等級所建立起來的軟件能正常運行,避免了這個類等級的用戶由于偶然的失誤而影響系統(tǒng)正常運行。 但可以說明指向抽象類對象的指針 ( 或引用 ) , 例如: Point *pa。 ? 一個類可以說明多個純虛函數(shù) , 包含有純虛函數(shù)的類稱為抽象類 。它的定義留給派生類來做 。 ? delete運算符和析構函數(shù)一起工作 ( new 和構造函數(shù)一起工作 ) , 當使用 delete刪除一個對象時 ,delete隱含著對析構函數(shù)的一次調(diào)用 , 如果析構函數(shù)為虛函數(shù) , 則這個調(diào)用采用動態(tài)聯(lián)編 。 ? 目前推薦的 C++標準不支持虛構造函數(shù)。 ? 析 構 時 應 先 調(diào) 用 C 的 析 構 函 數(shù) , 輸出“ Destructor C”。 ? 執(zhí)行語句 “ ()。 在對象撤消時 , 該對象所包含的在派生類中定義的成員要先于基類子對象之前撤消 。 } }。 } }。 class B : public A { public: B( ) { func( )。 include iostream using namespace std。c。b。b。對象 b和 c依次增加一個整型數(shù)據(jù)成員,內(nèi)存分配也順增 4個字節(jié)。 //調(diào)用 C::vfunc1( ) pcvfunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func2() coutendl。 // pb指向派生類 C pbvfunc1()。 //靜態(tài)聯(lián)編 , 調(diào)用 B::func1() pbfunc2()。b。 //調(diào)用 A::vfunc2( ) pafunc1()。 pa=amp。//調(diào)用 B::vfunc1( ) pavfunc2()。 //調(diào)用 A::vfunc2( ) coutendl。 //pa指向基類 A pavfunc1()。 , amp。endl。()endl。 B b(21,22)。} void vfunc1(){coutC::vfunc1( )endl。} void vfunc1(){coutB::vfunc1( )endl。} virtual void vfunc2(){coutA::vfunc2( )endl。 A(int a){m_A=a。 【 例 】 是程序?qū)崿F(xiàn) 。 圖 實函數(shù)和虛函數(shù)的圖解示意圖 從圖中可見 , 對象的起始地址是 vptr。 ? 首先給 vptr分配地址,它所占字節(jié)數(shù)決定對象中最長數(shù)據(jù)成員的長度。 進一步探討虛函數(shù)與實函數(shù)的區(qū)別 ? 假設基類和派生類都只有一個公有的數(shù)據(jù)成員 , 其中類A有 vfunc1和 vfunc2兩個虛函數(shù)和 func1和 func2兩個實函數(shù) 。 display(a)。 Point *p=amp。} //使用引用 void display(Pointamp。 public: Circle(double a, double b,double r) :Point(a,b) { radius=r。 y=j。 分析下面程序的輸出結果: include iostream using namespace std。第 1種是已經(jīng)演示過的按賦值兼容性定義使用基類指針 (或引用 )訪問虛函數(shù) 。 (2) 改寫了同名虛函數(shù) 。 這種多態(tài)性是程序運行到此處才動態(tài)確定的 , 所以稱為運行時的多態(tài)性 。 void A::fun( ) { ......// } //定義虛函數(shù) ? 當在派生類中定義了一個同名的成員函數(shù)時 , 只要該成員函數(shù)的參數(shù)個數(shù)和相應類型以及它的返回類型與基類中同名的虛函數(shù)完全一樣 ( 例如void area(void) 函數(shù) ) , 則無論是否為該成員函數(shù)使用 virtual, 它都將成為一個虛函數(shù) 。 虛函數(shù)的定義 為實現(xiàn)某種功能而假設的函數(shù)稱作虛函數(shù) 。 顯然 , 程序運行到語句 parea()。 如果派生類改寫了基類的虛函數(shù) ,編譯器將重新為派生類的虛函數(shù)建立地址 , 則函數(shù)指針調(diào)用這個改寫過的虛函數(shù) 。編譯器為含有虛函數(shù)類的對象首先建立一個入口地址,這個地址用來存放指向虛函數(shù)表的指針 vptr,然后按照類中虛函數(shù)的聲明次序,一一填入函數(shù)指針。此外,編譯器也為類增加一個數(shù)據(jù)成員,這個數(shù)據(jù)成員是一個指向該虛函數(shù)表的指針,通常稱為 vptr。必須給這兩個函數(shù)一個新的標識符 , 以便使它們與目前介紹的成員函數(shù)區(qū)別開來 。 ”語句時,只根據(jù)兼容性規(guī)則檢查它的合理性,也就是符合 “ 派生類對象的地址可以賦給基類的指針 ” 。這完全符合賦值兼容性規(guī)則。 //(4) ? 雖然 p用 c的地址初始化,但也是枉然。 除非派生類沒有基類的同名函數(shù) , 派生類的指針才根據(jù)繼承原則調(diào)用基類的函數(shù) , 但這已經(jīng)脫離給定的條件 。 Circle* pCircle。 圖 Point的對象 a和 Circle對象 c的內(nèi)存分配關系示意圖
點擊復制文檔內(nèi)容
化學相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1