您的位置:首页 > 编程语言 > C语言/C++

关于C++子类父类成员函数的覆盖和隐藏

2015-07-10 10:23 302 查看
函数的覆盖

   覆盖发生的条件:

(1) 基类必须是虚函数(使用virtual 关键字来进行声明)

(2)发生覆盖的两个函数分别位于派生类和基类

(3)函数名和参数列表必须完全相同

函数的隐藏

    隐藏发生的条件:

(1)子类和父类的函数名相同,参数列表可以不一样

看完下面的例子就明白了

#include "iostream"
using namespace std;
class CBase{
public:
virtual void xfn(int i){
cout << "Base::xfn(int i)" << endl; //1
}
void yfn(float f){
cout << "Base::yfn(float)" << endl; //2
}
void zfn(){
cout << "Base::zfn()" << endl; //3
}
};
class CDerived : public CBase{
public:
void xfn(int i){
cout << "Derived::xfn(int i)" << endl; //4
}
void yfn(int c){
cout << "Derived:yfn(int c)" << endl; //5
}
void zfn(){
cout << "Derived:zfn()" << endl; //6
}
};
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++ 覆盖 隐藏