-
接口類(lèi):僅僅含有純虛函數(shù)的類(lèi)
- 沒(méi)有數(shù)據(jù)成員,僅有純虛函數(shù)
查看全部 -
抽象類(lèi):含有純虛函數(shù)的類(lèi)
//?純虛函數(shù)的寫(xiě)法 virtual?double?calc()=0;?//
查看全部 -
先找到子類(lèi)的析構(gòu)函數(shù)
子類(lèi)的析構(gòu)函數(shù)執(zhí)行后,會(huì)自動(dòng)執(zhí)行父類(lèi)的析構(gòu)函數(shù)
查看全部 -
函數(shù)的覆蓋和隱藏:
隱藏:父子類(lèi)定義了同名的函數(shù)
覆蓋:子類(lèi)覆蓋父類(lèi)的虛函數(shù)
查看全部 -
虛函數(shù)表指針 ——> 指向一個(gè)虛函數(shù)表?
虛函數(shù)指針不同,但內(nèi)部虛函數(shù)指針一致
查看全部 -
函數(shù)的本質(zhì)就是一段二進(jìn)制代碼,寫(xiě)在內(nèi)存當(dāng)中
函數(shù)指針也是由四個(gè)基本內(nèi)存單元組成,存儲(chǔ)著內(nèi)存的地址,即函數(shù)的首地址
查看全部 -
virtual的限制:
不能修飾全局函數(shù) 不能修飾靜態(tài)?static?函數(shù) 不能修飾內(nèi)聯(lián)?inline?函數(shù) 不能修飾構(gòu)造函數(shù)
查看全部 -
虛析構(gòu)函數(shù) —— 避免造成內(nèi)存泄漏
//父類(lèi) class?Shape { ?public: ?????virtual?~Shape(); ?????Shape(); ?????virtual?double?calcArea(); } //?繼承 class?Circle?:?public?Shape { public: ????virtual?~Circle(); }
查看全部 -
//?virtual?實(shí)現(xiàn)動(dòng)態(tài)繼承 class?Shape { public: ????virtual?double?calcArea();???????? } //?circle?繼承 class?Circle?:?public?Shape?//?:?關(guān)鍵字?共同定義了繼承 { public: ????virtual?double?calcArea(); } //?Rect?繼承 class?Rect?:?public?Shape { public: ????virtual?double?calcArea(); }
查看全部 -
throw錯(cuò)誤編號(hào),try{test();}catch(類(lèi)型){根據(jù)編號(hào)處理}
查看全部 -
常見(jiàn)異常:數(shù)組下標(biāo)越界,除數(shù)為0,內(nèi)存不足。try? ?catch throw
查看全部 -
typeid返回的是type——info對(duì)象的引用?;?lèi)必須含有虛函數(shù)。只能獲取對(duì)象的實(shí)際類(lèi)型
查看全部 -
RTTI運(yùn)行時(shí)內(nèi)存識(shí)別。當(dāng)函數(shù)輸入父類(lèi)指針,根據(jù)實(shí)際傳入子類(lèi)指針的類(lèi)型不同做不同的操作、函數(shù)。typeid(*obj).name().typeid(*obj)==typeid(Bird).
Bird *bird =dynamic_cast<Bird *>(obj)
dynamic_cast只能用于指針和引用的轉(zhuǎn)化
查看全部 -
用能飛和飛行比賽理解接口類(lèi)
查看全部 -
僅僅含有純虛函數(shù)的類(lèi)叫接口類(lèi)
查看全部
舉報(bào)