今天在用BCB编译一个工程的时候,出现了一个编译warnnig信息引起了我的注意,代码类似如下:
class B
{
public:
virtual void f(void)
{
cout<<"B::f()"<<endl;
}
};
class D:public B
{
public:
void f(int i)
{
cout<<"D::f()"<<endl;
}
};
该段代码在BCB编译的warnning信息如下:
[C++ Warning] Unit1.cpp(27): W8022 'D::f(int)' hides virtual function 'B::f()'
这个编译警告信息说派生类D中的成员函数f(int)隐藏了基类的成员函数f(),是这样吗?我们试一试:
class D:public B
{
public:
virtual void f(int i)
{
cout<<"D::f()"<<endl;
}
void test()
{