cloud

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

常用链接

留言簿(5)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

      将虚拟函数声明为非公用的,将共用函数声明为非虚拟的.如果基类是需要被继承的,则其虚拟函数一定要是虚拟的.
      这个观点和Template Method模式可以说是殊途同归.
      如果一个基类的虚拟函数被声明为private,则可以认为派生类可以覆盖该虚拟函数,也可以不覆盖。但是不可以调用该函数的实现.
class Base
{
public:
    
void f(){ do_f(); }
private:
    
virtual void do_f();
}
;

      如果一个基类的虚拟函数被声明为protected,则可以认为派生类需要覆盖该虚拟函数,而且得调用基类的虚拟函数的实现
class Base
{
public:
    
void f(){ do_f(); }
protected:
    
virtual void do_f();
}
;

class Derive : public Base
{
protected:
    
virtual void do_f()
    
{
        
// do something
        Base::do_f();
        
// do something
    }

}
;
posted on 2007-03-05 09:24 cloud 阅读(316) 评论(0)  编辑 收藏 引用 所属分类: c++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理