private 继承

我觉得私有继承在设计模式中也有作用。

私有继承的子类一般不希望被其它的类所继承。有一种设计原则: 能够被继承的类都应该是虚类;能够实例化的类都不应该被继承。而私有类恰恰能够很好的实现该原则。

转一个帖子:
http://www.4ucode.com/Study/Topic/977313
正文
 

       昨晚阅读Gof的设计模式时,提到Adapter(适配器)有两种,分别为类适配器和对象适配器。其中表明类适配器采用多重继承适配接口。类适配器的关键是用一个分支继承接口,而用另外一个分支继承接口的实现部分。C++中作出这一个区分的方法是:用公共方式继承接口;用私有方式继承接口实现。就借此机会复习一下C++中的私有继承吧!

     通过在基类表中去掉public或者显示的声明private,可以私有的继承基类。当私有继承时,创建的新类有基类的所有数据和功能,但是这些功能是隐藏的所以它只是内部实现部分。该类的对象访问不到这些内部功能,并且一个对象不被看作这个基类的成员。当私有继承时,基类的所有public成员都变成了private。如果希望它们中的任何一个是可视的,只有用派生类的public选项申明它们的名字即可。

    class base1
   {
     public:
       char f() const { return 'a';} //内联函数,const成员函数
       int g() const  {return 2;}
       float h() const {return 3.0;}
   };

  class derived : private base1
  {
    public:
      base1::f; //将私有继承成员公有化
  };

  int main(void)
  {
    derived d;
    d.f();    //可以调用,因为被该私有成员被公有化了
    //d.h();  //不能调用,因为是私有函数,不能通过对象来调用
   
    return 0;
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章