事例:
使用using声明式解决遮掩问题。
class Derived: public Base
{
public:
using Base::mf1; //让Base class 内名为mf1和mf3的所有东西
using Base::mf3; //在Derived 作用域内都可见。
virtual void mf1();
void mf3();
void mf4();
};
Derived d;
int x;
d.mf1(); //没问题,调用Derived::mf1;
d.mf1(x); //现在没问题了,调用Base::mf1
d.mf2(); //没问题,调用Base::mf2
d.mf3(); //没问题,调用Derived::mf3
d.mf3(x) //现在没问题了,调用Base::mf3
使用 using 声明还可以做到在Derived类中重载Base类中的函数(别忘了,原来意义的重载只可以重载当前类中的函数)。