jlz

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  0 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新评论

  重新定义隐藏方法:
 
   class Dwelling
{
 public:
  virtual void showperks(int a) const;
};

class Hovel: public Dwelling
{
public:
virtual void showperks() const;
};

Hovel trump;
trump.showperks();  //valid
trump.showperks(5); //invalid

 1.如果重新定义 继承的方法,要保持原型相同。但如果返回类型是基类引用或指针, 则可以修改为指向派生类的引用或指针,这种特性称为返回类型协变.

 class Dwelling
{
 public:
  virtual Dewlling & build(int n);
};

class Hovel : public Dwelling
{
public:
virtual Hovel  &build(int n);
};

2. 如果基类声明被重载了,则在派生类中应该重定义所有的基类版本。否则其他版本将被隐藏。

   class Dwelling
{
 virtual void showperks(int a) const;
virtual void showperks(double x) const;
virtula void showperks() const;
};
  class Hovel: public Dwelling
{
 virtual void showperks(int a) const;
virtual void showperks(double x) const;
virtula void showperks() const;
};


posted on 2008-09-24 21:51 jz 阅读(97) 评论(0)  编辑 收藏 引用 所属分类: c++ primer plus 读书笔记