生活随笔
收集整理的這篇文章主要介紹了
关于C++子类父类成员函数的覆盖和隐藏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載:http://blog.csdn.net/worldmakewayfordream/article/details/46827161
函數的覆蓋
? ?覆蓋發生的條件:
(1) 基類必須是虛函數(使用virtual 關鍵字來進行聲明)
(2)發生覆蓋的兩個函數分別位于派生類和基類
(3)函數名和參數列表必須完全相同
函數的隱藏
? ? 隱藏發生的條件:
(1)子類和父類的函數名相同,參數列表可以不一樣
看完下面的例子就明白了
[cpp]?view plaincopy
#include?"iostream"?? using?namespace?std;?? class?CBase{?? ????public:?? ????????????virtual?void?xfn(int?i){?? ????????????????????cout?<<?"Base::xfn(int?i)"?<<?endl;??? ????????????}?? ????????????void?yfn(float?f){?? ????????????????????cout?<<?"Base::yfn(float)"?<<?endl;??? ????????????}?? ????????????void?zfn(){?? ????????????????????cout?<<?"Base::zfn()"?<<?endl;???? ????????????}?? };?? class?CDerived?:?public?CBase{?? ????public:?? ????????????void?xfn(int?i){?? ????????????????cout?<<?"Derived::xfn(int?i)"?<<?endl;???? ????????????}?? ????????????void?yfn(int?c){?? ????????????????cout?<<?"Derived:yfn(int?c)"?<<?endl;???? ????????????}?? ????????????void?zfn(){?? ????????????????cout?<<?"Derived:zfn()"?<<?endl;???? ????????????}?? };?? void?main(){?? ????????CDerived?d;?? ????????CBase?*pb?=?&d;?? ????????CDerived?*pd?=?&d;?? ????????pb->xfn(5);???? ????????pd->xfn(5);???? ?? ????????pb->yfn(3.14f);??? ????????pd->yfn(3.14f);???? ?? ????????pb->zfn();???? ????????pd->zfn();???? }??
總結
以上是生活随笔為你收集整理的关于C++子类父类成员函数的覆盖和隐藏的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。