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

正文內(nèi)容

c多態(tài)性復(fù)習(xí)要點(diǎn)(編輯修改稿)

2025-07-04 13:34 本頁面
 

【文章內(nèi)容簡介】 () { return Y。 }Pointamp。 operator ++()。Point operator ++(int)。Pointamp。 operator ()。Point operator (int)。void Print() { coutThe point is (X,Y)endl。 } private:int X,Y。}。Pointamp。 Point::operator ++(){ X++。 Y++。 return *this。}Point Point::operator ++(int){ Point temp=*this。 ++*this。 return temp。}Pointamp。 Point::operator (){ X。 Y。 return *this。}Point Point::operator (int){ Point temp=*this。 *this。 return temp。}void main(){ Point obj。 ()。 obj++。 ()。 ++obj。 ()。 obj。 ()。 obj。 ()。}分析:注意重載前綴單目運(yùn)算符和后綴單目運(yùn)算符的區(qū)別。前綴單目運(yùn)算符重載為類的成員函數(shù)時(shí),不需要顯式說明參數(shù),即函數(shù)沒有形參;而后綴單目運(yùn)算符重載為類的成員函數(shù)時(shí),函數(shù)要帶有一個整型形參。例題10:指出下列程序中的錯誤,并說明錯誤原因。 class X //1 {public: //2 int readme() const {return m。} //3 void writeme(int i) {m=i。} //4private: //5int m。 //6}。 //7void f(Xamp。 x1,const Xamp。 x2) //8 {()。 //9 (1)。 //10 ()。 //11 (2)。 //12 } //13答案: 行12出錯,刪除。分析:常對象不能調(diào)用一般成員函數(shù),因此(1)類X中定義了兩個成員函數(shù):常成員函數(shù)readme和一般成員函數(shù)writeme;(2) 函數(shù)f中定義了兩個參數(shù):常參數(shù)x2和一般參數(shù)x1。兩個對象分別調(diào)用了兩個成員函數(shù);(3)成員函數(shù)與對象之間的操作關(guān)系是:常對象和一般對象都可以調(diào)用常成員函數(shù),而一般成員函數(shù)只能由一般對象調(diào)用,常對象調(diào)用它時(shí)將產(chǎn)生錯誤;(4) 根據(jù)以上分析,一般對象x1對常成員函數(shù)readme和一般成員函數(shù)writeme的調(diào)用正確,常對象x2對常成員函數(shù)readme的調(diào)用正確,但對一般成員函數(shù)writeme的調(diào)用錯誤。不清楚函數(shù)的調(diào)用者和被調(diào)用者,顛倒了成員函數(shù)和對象二者之間的關(guān)系,導(dǎo)致判斷錯誤,認(rèn)為行11出錯。例題11:分析下列程序的輸出結(jié)果。include class A{public: A() { coutA39。s cons.endl。 }virtual ~A() { coutA39。s des.endl。 } virtual void f() { coutA39。s f().endl。 }void g() { f()。 }}。class B : public A{public: B() { f()。 coutB39。s cons.endl。 }~B() { coutB39。s des.endl。 }}。class C : public B{public: C() { coutC39。s cons.endl。 }~C() { coutC39。s des.endl。 }void f() { coutC39。s f().endl。 }}。void main(){ A *a=new C。 ag()。 delete a。}運(yùn)行結(jié)果:A39。s cons.A39。s f().B39。s cons.C39。s cons.C39。s f().C39。s des.B39。s des.A39。s des.分析:(1) 類B從類A公有繼承,類C從類B公有繼承,B是A的子類型,C是B的子類型,也是A的子類型。因此可以使用類C的對象去初始化基類A的指針;(2) 類A中定義了兩個虛函數(shù):虛成員函數(shù)f和虛析構(gòu)函數(shù)。由于類C中的f函數(shù)與基類A中的f函數(shù)的參數(shù)和返回類型相同,因此類C中的成員函數(shù)f也是虛函數(shù);由于基類A中定義了虛析構(gòu)函數(shù),因此派生類B和C的析構(gòu)函數(shù)也都是虛析構(gòu)函數(shù);(3) 主程序中A *a=new C。隱含了兩步操作,即:首先建立一個派生類C的對象,然后使用該派生類對象去初始化基類A的指針a;(4) 用new運(yùn)算符創(chuàng)建C對象時(shí),要調(diào)用C的構(gòu)造函數(shù)。C是一個派生類,它必須負(fù)責(zé)對其直接基類的構(gòu)造函數(shù)的調(diào)用,因此執(zhí)行順序是:先執(zhí)行直接基類B的構(gòu)造函數(shù),再執(zhí)行類C的構(gòu)造函數(shù)體;(5) 類B也是一個派生類,它也必須負(fù)責(zé)調(diào)用它的直接基類A的構(gòu)造函數(shù),其執(zhí)行順序是:先執(zhí)行直接基類A的構(gòu)造函數(shù),再執(zhí)行類B的構(gòu)造函數(shù)體;(6)執(zhí)行類A的構(gòu)造函數(shù),輸出:A39。s cons.;(7)類B的構(gòu)造函數(shù)體中,首先調(diào)用了虛函數(shù)f,但由于是在構(gòu)造函數(shù)中調(diào)用虛函數(shù),所以對它的調(diào)用采用靜態(tài)聯(lián)編。因?yàn)轭怋中沒有對f函數(shù)進(jìn)行定義,因此調(diào)用基類A中的f函數(shù),首先輸出A39。s f().;繼續(xù)執(zhí)行類B的構(gòu)造函數(shù)體,輸出B39。s cons.;(8) 執(zhí)行類C的構(gòu)造函數(shù)體,輸出:C39。s cons.;(9) 成員函數(shù)g中調(diào)用了虛函數(shù)f,此時(shí)滿足動態(tài)聯(lián)編的條件:C是A的子類型;存在虛函數(shù)f;在成員函數(shù)中調(diào)用了虛函數(shù),因此,通過指針a訪問g函數(shù)時(shí),采用動態(tài)聯(lián)編,即ag()調(diào)用的是派生類C中的成員函數(shù)f,輸出:C39。s f().;(10)delete a將調(diào)用析構(gòu)函數(shù)。由于整個類族中都定義了虛析構(gòu)函數(shù),因此此處將進(jìn)行動態(tài)聯(lián)編,即調(diào)用的是基類指針a當(dāng)前正在指向的派生類C的析構(gòu)函數(shù)。由于C是一個派生類,所以它必須負(fù)責(zé)調(diào)用它的基類的析構(gòu)函數(shù),其執(zhí)行順序是:先調(diào)用派生類C的析構(gòu)函數(shù),再調(diào)用直接基類B的析構(gòu)函數(shù)。而
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1