面试知识点总结——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保持不变,这样,公司和房子是除了外人不可以访问,自己,友元子类都可以访问