您的位置:首页 > 其它

覆盖和隐藏

2016-03-07 17:20 323 查看
void VBase::xfn(int i)

{
cout<<"Base::xfn(int i)"<<endl;

}

void VBase::yfn(float f)

{
cout<<"Base::yfn(float f)"<<endl;

}

void VBase::zfn()

{
cout<<"Base::zfn()"<<endl;
}

void Derived::xfn(int i) //覆盖了基类的xfn函数

{
cout<<"Derived::xfn(int i)"<<endl;

}

void Derived::yfn(int c) //隐藏了基类的yfn函数

{
cout<<"Derived::yfn(int c)"<<endl;

}

void Derived::zfn() //隐藏了基类的zfn函数

{
cout<<"Derived::zfn()"<<endl;

}

int _tmain(int argc, _TCHAR* argv[])

{
Derived d;

VBase *pB = &d;
Derived *pD = &d;

pB->xfn(5);
//输出:Derived::xfn(int i)
pD->xfn(5);
//输出:Derived::xfn(int i)

pB->yfn(3.14f);//输出:Base::yfn(float f)
pD->yfn(3.14f);//输出:Derived::yfn(int c)

pB->zfn();
//输出:Base::zfn()
pD->zfn();
//输出:Derived::zfn()

system("pause");
return 0;

}

//构成函数覆盖的条件为:

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

//2.发生覆盖的两个函数要分别位于派生类和基类中。

//3.函数名称与参数列表必须完全相同

//函数的覆盖是发生在派生类与基类之间,两个函数必须完全相同,并且都是虚函数。那么不属于这种情况的,就是隐藏了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: