/***********************************************************************
**file: reload.cpp
**Author: Freeking
**Created: Sep 4th 2009
**Description: 关于隐藏和覆盖的区别
*************************************************************************/
#include <iostream>
using namespace std;
class Base
{
public:
virtual void xfn(int i)
{
cout<<"base::xfn(int i)"<<endl;
}
void yfn(float f)
{
cout<<"base::yfn(float f)"<<endl;
}
void zfn()
{
cout<<"base::zfn()"<<endl;
}
};
class Derived : public Base
{
public:
void xfn(int i)//覆盖了基类的
{
cout<<"Derive::xfn(int i)"<<endl;
}
void yfn(float f)//隐藏
{
cout<<"Derive::yfn(float f)"<<endl;
}
void zfn()//隐藏
{
cout<<"Derive::zfn()"<<endl;
}
};
int main()
{
Derived d;
Base *pB = &d;
Derived *pD = &d;
Base a = (Base)d;
a.xfn(6);
pB->xfn(5);
pD->xfn(5);
pB->yfn(3.14f);
pD->yfn(3.14f);
pB->zfn();
pD->zfn();
return 0;
}