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