C++子类父类成员函数的覆盖和隐藏实例详解

C++子类父类成员函数" title="成员函数">成员函数的覆盖和隐藏实例详解

函数的覆盖

   覆盖发生的条件:

(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++子类父类成员函数的覆盖和隐藏实例详解 的全部内容, 来源链接: utcz.com/z/319662.html

回到顶部