-
重載、覆蓋、隱藏的區(qū)別
一、重載(overload)
指函數(shù)名相同,但是它的參數(shù)表列個(gè)數(shù)或順序,類型不同。但是不能靠返回類型來(lái)判斷。
(1)相同的范圍(在同一個(gè)作用域中) ;
(2)函數(shù)名字相同;
(3)參數(shù)不同;
(4)virtual 關(guān)鍵字可有可無(wú)。
(5)返回值可以不同;二、重寫(xiě)(也稱為覆蓋 override)
是指派生類重新定義基類的虛函數(shù),特征是:
(1)不在同一個(gè)作用域(分別位于派生類與基類) ;
(2)函數(shù)名字相同;
(3)參數(shù)相同;
(4)基類函數(shù)必須有 virtual 關(guān)鍵字,不能有 static 。
(5)返回值相同(或是協(xié)變),否則報(bào)錯(cuò);<—-協(xié)變這個(gè)概念我也是第一次才知道…(6)重寫(xiě)函數(shù)的訪問(wèn)修飾符可以不同。盡管 virtual 是 private 的,派生類中重寫(xiě)改寫(xiě)為 public,protected 也是可以的
三、重定義(也成隱藏)
(1)不在同一個(gè)作用域(分別位于派生類與基類) ;
(2)函數(shù)名字相同;
(3)返回值可以不同;
(4)參數(shù)不同。此時(shí),不論有無(wú) virtual 關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載以及覆蓋混淆) 。
(5)參數(shù)相同,但是基類函數(shù)沒(méi)有 virtual關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆)?查看全部 -
111111111
查看全部 -
異常處理捕獲
查看全部 -
dynamic_cast? 注意;
查看全部 -
cxhsd?
查看全部 -
通過(guò)父類實(shí)例化子類
查看全部 -
老師這點(diǎn)講錯(cuò)了,delete父類指針,先執(zhí)行的是子類的析構(gòu)函數(shù),后執(zhí)行父類析構(gòu)函數(shù)
查看全部 -
虛析構(gòu)函數(shù)
查看全部 -
捕獲異常代碼:
查看全部 -
C++的異常處理:
網(wǎng)線未插入or內(nèi)存不足 等等
try...catch...//嘗試,抓住
throw//拋出
拋出的內(nèi)容復(fù)雜時(shí):
常見(jiàn)異常:1、數(shù)組下標(biāo)越界;2、除數(shù)為零;3、內(nèi)存不足
系統(tǒng)常見(jiàn)異常:
查看全部 -
RTTI:運(yùn)行時(shí)類型識(shí)別
可分為,typeid和dynamic——cast
查看全部 -
C++中如果抽象類中僅含有純虛函數(shù)而不含有其他任何東西,則稱該類為接口類。
查看全部 -
C++純虛函數(shù)的寫(xiě)法:
包含純虛函數(shù)的類叫做抽象類:
查看全部 -
C++中virtual修飾符不能隨便使用,
他必須是某一類的成員函數(shù),或者元素
1、不能時(shí)普通的函數(shù),
2、不能修飾靜態(tài)的成員函數(shù);
3、不能修飾內(nèi)聯(lián)inline函數(shù);//如果使用編譯器會(huì)忽視inline,把函數(shù)當(dāng)作純錯(cuò)的虛函數(shù)
4、不能修飾構(gòu)造函數(shù);
查看全部 -
C++中多態(tài)定義:
早綁定,靜態(tài)多態(tài),在編譯前程序便知道使用哪種函數(shù),(函數(shù)重載)
晚綁定,動(dòng)態(tài)多態(tài),定義虛函數(shù),知道程序需要使用哪個(gè)函數(shù)。
查看全部
舉報(bào)