class Base
{
public:
void fun1();
};
class Derived : public Base
{
public:
void fun1(int);
void somefun()
{
fun1();//调用Base::fun1无法编译通过
//因为Derived::fun1把Base::fun1遮掩了
}
};
为了让被遮掩的名称可用,可以使用using声明式或转交函数
class Base
{
public:
void fun1();
void fun2();
};
class Derived : public Base
{
public:
using Base::fun1;//令Base::fun1在Derived作用域中可见
void fun1(int);
void fun2()
{
Base::fun2();//虽然Base::fun2在Derived作用域中仍不可见
//但是使用Derived::fun2转发Base::fun2
}
};