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

正文內(nèi)容

c程序設(shè)計教程:第9章-多態(tài)性和虛(參考版)

2024-10-06 16:15本頁面
  

【正文】 。 Display(Tri)。Rec)。Tri)。Tri。 Display(Rec)。 cout(),()endl。 Rectangle Rec(4,8)。 ④ 根據(jù)下面的測試程序設(shè)計這些類及函數(shù) Display 。 ③ 設(shè)計一個不屬于這些類的 Display函數(shù),用來輸出Triangle和 Rectangle對象的周長及面積。 實驗 9 虛函數(shù)與多態(tài)性 1. 實驗題目 演示虛函數(shù)的多態(tài)性 。 2. 實現(xiàn)多態(tài)性的函數(shù) 多態(tài)性的前提之一是根據(jù)賦值兼容性規(guī)則使用指針 ( 或引用 ) , 但是這個函數(shù)不一定是類的成員函數(shù) , 可以是普通函數(shù) , 而且可以重載 。} //輸出 Call C 程序運行結(jié)果如下: Call C Call C Call C 上面的所有調(diào)用將實際調(diào)用 C中的虛函數(shù) f, 即輸出 “ Call C”。 //輸出 Call C pb f( )。c。c。c。 C *pc, c。 void main( ){ A *pa。 class C : public A, public B { public: void f( ) {cout" Call C" endl。 class B { public: void f( ) {cout" Call B" endl。 class A { public: virtual void f( ){cout" Call A" endl。 【 例 】 多重繼承使用虛函數(shù)。在需要時,函數(shù) total可從這些形狀的對象那里獲得該對象的面積, area成員函數(shù)保證了這點。由于在 shape類中不能對此做出決定,因此被說明為純虛函數(shù)。 coutThe total area is:sumendl。i++) couts[i]=s[i]area()endl。 for(int i=0。 s[3]=new square(6)。 s[1]=new triangle(3,6)。 void main( ) { shape *s[5]。 return sum。 in。 double total(shape *s[],int n){ double sum=。 class rectangle : public triangle{ public: rectangle(double h, double w) : triangle( h, w ) { } double area( ) { return H * W。 } double area( ) { return H * W * 。 class triangle : public square{ protected: double W。 class circle : public square{ public: circle(double r) : square(r){ } double area( ) { return H * H * 。} double area( ) { return H * H。 class square : public shape{ protected: double H。 class shape{ public: virtual double area( )=0。 // virtual void area( ) { } // 在成員函數(shù)內(nèi)可以調(diào)用純虛函數(shù),但在構(gòu)造函數(shù)或析構(gòu)函數(shù)內(nèi)調(diào)用一個純虛函數(shù)將導(dǎo)致程序運行錯誤,因為沒有為純虛函數(shù)定義代碼。 抽象類至少含有一個虛函數(shù) , 而且至少有一個虛函數(shù)是純虛函數(shù) , 以便將它與空的虛函數(shù)區(qū)分開來 。如果派生類中給出了基類所有純虛函數(shù)的實現(xiàn) , 則該派生類不再是抽象類 。 ? 從一個抽象類派生的類必須提供純虛函數(shù)的實現(xiàn)代碼 ,或在該派生類中仍將它說明為純虛函數(shù) , 否則編譯器將給出錯誤信息 。 // 就是錯誤的 。 一個抽象類只能作為基類來派生新類 , 不能說明抽象類的對象 。 點沒有面積 , 可以說明為: virtual double area( )=0。 說明純虛函數(shù)的一般形式為: class 類名 { virtual 函數(shù)類型 函數(shù)名 ( 參數(shù)列表 ) =0。 純虛函數(shù)與抽象類 在許多情況下 , 在基類中不能為虛函數(shù)給出一個有意義的定義 , 這時可以將它說明為純虛函數(shù) 。 一般說來 , 如果一個類中定義了虛函數(shù) , 析構(gòu)函數(shù)也應(yīng)說明為虛函數(shù) , 尤其是在析構(gòu)函數(shù)要完成一些有意義的任務(wù)時 , 例如釋放內(nèi)存等 。只要基類的析構(gòu)函數(shù)被說明為虛函數(shù),則派生類的析構(gòu)函數(shù),無論是否使用 virtual進行說明,都自動地成為虛函數(shù)。由于析構(gòu)函數(shù)不允許有參數(shù),因此一個類只能有一個虛析構(gòu)函數(shù)。基類 A中的析構(gòu)函數(shù)沒有輸出信息 , 程序結(jié)束運行 。 接著調(diào)用類 B的析構(gòu)函數(shù) , 這個析構(gòu)函數(shù)調(diào)用虛函數(shù) fund。 按照虛函數(shù)調(diào)用規(guī)則 , 它不會去調(diào)用基類 A的 func, 而應(yīng)該執(zhí)行自己的 func, 輸出 “ Class C”?!睍r , 類 C自己沒有函數(shù) fun,轉(zhuǎn)去執(zhí)行它的直接基類 B的 fun, 輸出 “ Come here and go...”。 類 C的構(gòu)造函數(shù)為空函數(shù) ,所以構(gòu)造對象 c時 , 只有一句輸出信息 。 ? 函數(shù) func是虛函數(shù) , 構(gòu)造對象 c時 , 類 A構(gòu)造函數(shù)是空函數(shù) , 沒有輸出 。 } 輸出結(jié)果如下: Constructing A // 建立對象 c調(diào)用 B( )產(chǎn)生 Come here and go...Class C // ( )輸出 Destructor C // 析構(gòu)對象 c時 , 由 ~C()產(chǎn)生 Destructor A // 析構(gòu)對象 c時調(diào)用 ~B()產(chǎn)生 ? 在建立 C類的對象 c時 , 它所包含的基類子對象在派生類中定義的成員建立之前被建立 。 void main( ){ C c。} void fund( ) { cout Destructor C endl。 class C : public B { public: C( ) { } void func( ) { cout
點擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1