C++:继承(1)——public、protected、private继承

本文介绍了C++中类的三种继承方式:public、protected和private继承,详细阐述了每种继承方式下基类成员在派生类中的访问权限。公共继承遵循is-a原则,保护继承和私有继承则体现has-a关系,同时讨论了如何在不直接访问基类私有成员的情况下获取其状态。
摘要由CSDN通过智能技术生成


派生类可以继承定义在基类中的成员,但是派生类的成员函数不一定有权访问从基类继承而来的成员。
派生类将除了基类的构造函数和析构函数以外的所有成员都继承下来了。

类的public、protected、private继承

/ public继承 protected继承 private继承
基类public成员 public protected 不可见 ❌
基类protected成员 protected protected 不可见❌
基类private成员 public protected 不可见❌

1.公有继承的特点是:基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有,即在派生类中不能访问,在类外也不能访问。

私有成员体现了数据的封装性,如果基类的私有成员可以被派生类所访问,即破坏了基类的封装性,这就会失去C++的一个重要特性。

为什么派生类不能访问基类的私有成员?
答:因为派生类和基类是不同的类域,在不同类中访问相当于在类外访问私有成员。
 我们在派生类的成员函数中访问了父类的私有成员,相当于在类外访问私有成员,是错误的。

2.保护继承的特点是:基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
原public,protected属性的成员继承后为protected属性,原private成员仍为private属性

The protected access label can be thought of as a blend of private and
public : Like private members, protected members are inaccessible to
users of the class. Like public members, the protected members are
accessible to classes derived from this class.

portected成员在基类内表现类似private成员(可以在基类内被访问,不可以在基类外[对象]被访问),在基类被public/protected继承时表现类似public成员(可以在派生类内被访问,不可以在派生类外[对象]被访问);

3.私有继承的特点:即所有基类成员均变成派生类的私有成员,基类的私有成员仍然不能在派生类中访问。

三种继承方式都介绍完毕后,肯定会有一个问题,那就是派生类无论怎样都无法访问基类的私有成员,那么我们要想知道私有成员的状态应该怎么办呢?
我们可以在基类定义非私有的show函数,然后在派生类调用它即可

public继承:基类public、protected、private的访问权限

/ 基类内 基类对象 派生类内 派生类对象
基类public成员
基类protected成员 ✅<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值