重載overload
函數(shù)名相同,但形參的個數(shù)或形參的類型不同。
僅返回值不同,不能定義為重載函數(shù)。
class Base { public: void baseFun( int ) { cout << " baseFun(int) in Base " << endl; } void baseFun( double ) { cout << " baseFun(float) in Base " << endl; } };
?
覆蓋Override
派生類對基類virtual函數(shù)的重寫(原型一樣)。
class Base { public: virtual void baseVirtualFun( int ) { cout << " baseVirtualFun(float) in Base " << endl; } }; class Derived: public Base { public: virtual void baseVirtualFun( int ) { cout << " baseFun(float) in Derived " << endl; } };
?
隱藏(另一個新的函數(shù))
兩種情況:
1) 如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時,不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。
2) 如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有virtual關(guān)鍵字。此時,基類的函數(shù)被隱藏(注意別與覆蓋混淆)。
class Base { public: virtual void baseVirtualFun( int ) { cout << " baseVirtualFun(float) in Base " << endl; } }; class Derived: public Base { public: virtual void baseVirtualFun( float ) { cout << " baseFun(float) in Derived " << endl; } };
?
?
總結(jié):重載是同一作用域,覆蓋是派生類對基類virtual方法的重寫,隱藏是兩個類之間(可用using 引用)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
