例如,在下面的程序中,我通过“使用”关键字撤消名称隐藏。如果我有基类和一个派生类“我得到预期的模棱两可的调用错误”。但是,如果我现在有两个派生类(孩子和孙子),孩子和孙子在这里具有相同的重载函数,我也会通过“使用”关键字撤消名称隐藏。但它正在被编译并得到输出。我的问题是为什么我没有收到“对重载函数的模糊调用”的错误。
class baseNameHiding
{
protected:
int nameHidingexample(int t)
{
cout<<"im baseeeeeeeeeeee"<<endl;
return 0;
}
};
class derivedNameHiding:public baseNameHiding
{
public:
float nameHidingexample(float s)
{
cout<<"im derived"<<endl;
return 0;
}
using baseNameHiding::nameHidingexample;
};
class grandDerivedNameHiding:public derivedNameHiding
{
public:
float nameHidingexample(float f)
{
cout<<"im grand derived"<<endl;
return 0;
}
using baseNameHiding::nameHidingexample;
using derivedNameHiding::nameHidingexample;
};
int main()
{
char a;float f = 0.0;
derivedNameHiding derived;
derived.nameHidingexample(0);
grandDerivedNameHiding grandchild;
grandchild.nameHidingexample(f);
cin>>a;
}
//output
im baseeeeeeeeeeee
im grand derived