昨晚在newsgroup上看到一个问题。我自己也弄错了。放在这。做个记录。
看下面的程序:
#include <iostream>
using namespace std;
class Base
{
public:
virtual void fun(int a)
{
cout<< "Base fun"<<a <<endl;
}
virtual void fun()
{
cout<<"Base void fun" <<endl;
}
};
class Der:public Base
{
public:
// using Base::fun;
void fun()
{
cout<<"Der:: fun()" <<endl;
}
};
void main()
{
Der d;
d.fun();
d.fun(1);
}
有问题不? 咋一看一点问题都没有。但是编译器就是编译不了。呵呵。后来查到了说是个名字隐藏问题。解决方法很简单,把注释那行还原回来就ok了。
本文探讨了一个关于C++中名字隐藏的问题实例。通过一个具体的代码示例,展示了当派生类成员函数与基类虚拟函数同名时可能出现的编译错误,并给出了简单的解决方案。
1588

被折叠的 条评论
为什么被折叠?



