欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

私有继承与保护继承

程序员文章站 2022-03-08 20:23:28
...

防止扩散

一.防止扩散

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

–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; 
 };