私有继承与保护继承

来源:互联网 发布:百度p2p cdn 知乎 编辑:程序博客网 时间:2024/05/16 15:56

防止扩散

一.防止扩散

•私有继承亦称实现继承,旨在于子类中将其基类的公有和保护成员私有化,既禁止从外部通过该子类访问这些成员,也禁止在该子类的子类中访问这些成员

–class DCT  {     public: void codec (void);  };–class JPEG : private DCT  {     public: void render (void) { ... codec () ... };   };–JPEG jpeg (...);  jpeg.render ();  jpeg.codec (); // 错误

有限地防止扩散

一.有限地防止扩散

•保护继承是一种特殊形式的实现继承,旨在于子类中将其基类的公有和保护成员进行有限的私有化,只禁止从外部通过该子类访问这些成员,但并不禁止在该子类的子类中访问这些成员

–class DCT  {     public: void codec (void); } ;–class JPEG : protected DCT  {     public: void render (void) { ... codec () ... };  };–class M-JPEG : public JPEG  {     public: void play (void) { ... codec () ... };  };

禁止向上造型

一.禁止向上造型

•私有子类和保护子类类型的指针或引用,不能隐式转换为其基类类型的指针或引用

–DCT* dct = new JPEG (...); // 错误–void inverse (DCT const& dct)  { ... }  JPEG jpeg (...);  inverse (jpeg); // 错误–class Inverse  {  public:         DCT& impl (void)         {             return m_jpeg;         } // 错误  private:         JPEG m_jpeg;  };