设为首页 加入收藏

TOP

继承与遮掩问题(一)
2013-01-09 14:10:50 来源: 作者: 【 】 浏览:779
Tags:继承 遮掩 问题

  继承:

  pure virtual 函数的目的是为了让Derived class 只继承函数接口。

  impure virtual(虚) 函数的目的是让Derived class 继承该函数的接口和缺省实现。

  non-virtual(普通) 函数的目的是为了令Derived class 继承函数的接口及一份强制性实现。如果成员函数是个non-virtual函数,意味着它并不打算在Derived class中有不同的行为。

  遮掩:

  以作用域为基础的"名称遮掩规则"同样适用于类的继承。而且不论函数是virtual或non-virtual都一体适用。

  事例:

  Derived class 内的名称会遮掩 Base class 内的名称。

  class Base

  {

  private:

  int x;

  public:

  virtual void mf1() = 0;

  virtual void mf1(int);

  virtual void mf2();

  void mf3();

  void mf3(double);

  };

  class Derived: public Base

  {

  public:

  virtual void mf1();

  void mf3();

  void mf4();

  };

  Derived d;

  int x;

  d.mf1();   //没问题,调用Derived::mf1;

  d.mf1(x);  //错误,因为Derived::mf1遮掩了Base::mf1

  d.mf2();   //没问题,调用Base::mf2

  d.mf3();   //没问题,调用Derived::mf3

  d.mf3(x)       //错误,因为Derived::mf3遮掩了Base::mf3

  为了让遮掩的名称再见天日,可使用using 声明式或转交函数。

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇连加编程实例 下一篇C++标准库pair

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: