继承与遮掩问题(二)

2013-01-09 14:10:50 · 作者: · 浏览: 790

 

  事例:

  使用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类中的函数(别忘了,原来意义的重载只可以重载当前类中的函数)。