C++概念重載、覆蓋、隱藏的使用說明
函數(shù)重載:
在C++程序中,可以將語義、功能相似的幾個函數(shù)用同一個名字表示,即函數(shù)重載。
重載的實現(xiàn):
幾個同名的重載函數(shù)仍然是不同的函數(shù),它們是如何區(qū)分的呢?我們自然想到函數(shù)接口的兩個要素:參數(shù)與返回值。如果同名函數(shù)的參數(shù)不同(包括類型、順序不同),那么容易區(qū)別出它們是不同的函數(shù)。
重載與覆蓋成員函數(shù)被重載的特征:
(1)相同的范圍(在同一個類中);
(2)函數(shù)名字相同;
(3)參數(shù)不同;
(4)virtual 關(guān)鍵字可有可無。
覆蓋是指派生類函數(shù)覆蓋基類函數(shù),特征是:
(1)不同的范圍(分別位于派生類與基類);
(2)函數(shù)名字相同;
(3)參數(shù)相同;
(4)基類函數(shù)必須有virtual 關(guān)鍵字。
隱藏規(guī)則:本來僅僅區(qū)別重載與覆蓋并不算困難,但是C++的隱藏規(guī)則使問題復(fù)雜性增加了許多。這里“隱藏”是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:
(1)如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時,不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。
(2)如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有virtual關(guān)鍵字。此時,基類的函數(shù)被隱藏(注意別與覆蓋混淆)。
相關(guān)文章
QT通過C++線程池運行Lambda自定義函數(shù)流程詳解
最近在接觸公司的一個QT桌面項目,其中里面有一個模塊是使用線程池去運行自定義函數(shù)的,自己潛心研究那個線程池代碼一天,發(fā)現(xiàn)研究不透,看不懂,里面幾乎都是使用C++11的新特性進(jìn)行編寫2022-10-10C++入門教程之內(nèi)聯(lián)函數(shù)與extern?"C"詳解
C++中的內(nèi)聯(lián)函數(shù)與靜態(tài)函數(shù)靜態(tài)函數(shù)靜態(tài)函數(shù)的定義靜態(tài)函數(shù)又稱為內(nèi)部函數(shù),下面這篇文章主要給大家介紹了關(guān)于C++入門教程之內(nèi)聯(lián)函數(shù)與extern?"C"的相關(guān)資料,需要的朋友可以參考下2023-01-01C語言 ffmpeg與sdl實現(xiàn)播放視頻同時同步時鐘詳解
使用ffmpeg和sdl實現(xiàn)播放視頻后,需要再實現(xiàn)時鐘同步才能正常的播放視頻,尤其是有音頻的情況,我們通常需要將視頻同步到音頻來確保音畫同步2022-09-09