-
多態(tài)中存在的問題:內(nèi)存泄露 例如圖中,多定義了一個指針,在多態(tài)中通過父類指針指向子類對象,并且通過父類指針去操作子類對象中的虛函數(shù)時,當(dāng)使用delete去銷毀對象,并想借助父類的指針銷毀子類對象會出現(xiàn)問題(只會執(zhí)行父類的析構(gòu)函數(shù)),執(zhí)行不到Circle的析構(gòu)函數(shù) Shape *shape = new Circle(3,5,4.0); shape->calcArea(); delete shape1; //只會執(zhí)行父類的析構(gòu)函數(shù),執(zhí)行不到Circle的析構(gòu)函數(shù) shape1 = NULL 必須引入虛析構(gòu)函數(shù),同樣的使用virtual修飾父類的析構(gòu)函數(shù)(子類的析構(gòu)函數(shù)可寫可不寫virtual關(guān)鍵字,系統(tǒng)會自動填上,推薦寫上)查看全部
-
動態(tài)多態(tài)(晚綁定):必須以封裝和繼承為基礎(chǔ) 例如:父類Shape,子類Circle和Rect都有calcArea()成員函數(shù),若想如左圖那樣讓shape1和shape2對象進(jìn)行面積計算,則必須將父類的calcArea()成員函數(shù)加上virtual關(guān)鍵字使其成為虛函數(shù),系統(tǒng)會自動為子類的calcArea()成員函數(shù)加上virtual關(guān)鍵字(推薦在子類定義中也加上virtual關(guān)鍵字)查看全部
-
靜態(tài)多態(tài)(早綁定):程序在編譯階段,就已經(jīng)確定下來要使用哪個函數(shù)查看全部
-
面向?qū)ο笕筇卣?查看全部
-
我被異常處理了 難道所有代碼最好都弄成這樣233 比如分配內(nèi)存弄到NULL時一個if就OK了么查看全部
-
實(shí)現(xiàn)動態(tài)多態(tài)(早綁定)查看全部
-
233沒聽懂 強(qiáng)制類型轉(zhuǎn)換和課里面講的那個有什么區(qū)別額查看全部
-
if(typeid(*指針對象)==typeid(轉(zhuǎn)換對象)) { ....*轉(zhuǎn)換對象=dynamic_cast<剛剛的轉(zhuǎn)換對象*>(剛剛的指針對象); 轉(zhuǎn)換對象->對象();//打印 }查看全部
-
RTTI實(shí)例查看全部
-
類中僅有純虛函數(shù)的類,無數(shù)據(jù)成員和其他函數(shù)查看全部
-
抽象類無法實(shí)現(xiàn)實(shí)例化查看全部
-
含有純虛函數(shù)的類叫做抽象類查看全部
-
純虛函數(shù)=0查看全部
-
233好吧 我也是醉了查看全部
-
江河湖?;谢秀便被谢秀便被谢秀便苯雍倓?vvv 哥哥哥哥查看全部
舉報
0/150
提交
取消