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

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

函数的覆盖

覆盖发生的条件:

(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++子类父类成员函数的覆盖和隐藏实例详解

相关文章:

你感兴趣的文章:

标签云: