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

面试知识点总结——C++中公有继承、私有继承和保护继承的区别

程序员文章站 2022-07-15 16:43:05
...

假设基类是一个快要退休的富豪,代码如下:

class RichMan
{
public:
    RichMan();
    ~RichMan();
    int m_company;
private:
    int m_money;
    int m_car;
protected:
    int m_house;
};

公司是public的,那么他自己(基类),创业伙伴(友元),儿子(子类),其他人(外部)都可以访问。钱和车子是private的,自己(基类),创业伙伴(友元)可以访问。儿子和外人都不给开。房子是protected的,自己(基类),创业伙伴(友元)可以访问,儿子(子类)也可以访问,外人不可以访问。现在他要退休了,那么有三种继承方式:

  • 公有继承
    他的儿子继承了他:LittleRichMan类
class LittleRichMan : public RichMan
{
public:
LittleRichMan();
~LittleRichMan();
};

经过公有继承后,public成员保持不变,private成员不可见,protected成员也保持不变。他的儿子继续开着公司,住着房子,但是爸爸的车子和钱拿不到。

  • 私有继承
    可以想象他的儿子是个自私的人,通过private的方式继承,因此public和protected变成了private。自己占用了公司和房子,这样除了自己和友元,任何方式都不得访问。

  • 保护继承
    原先的public变成了protected,protected保持不变,这样,公司和房子是除了外人不可以访问,自己,友元子类都可以访问