【转载】 c++私有公有、保护与继承

C++中的封装通过公有、私有和保护权限实现,旨在保护代码和数据不被意外破坏。公有成员在类内部、派生类及对象中均可访问,保护成员限于类内部和派生类,私有成员只能在类内部访问。三种权限在继承时有不同的作用域变化:公有继承保持不变,保护继承将基类公有成员转为保护,私有继承则将所有成员转为私有。理解这些概念有助于更好地利用C++进行面向对象编程。
摘要由CSDN通过智能技术生成

@c++公有、私有、保护的理解

c++公有、私有、保护的理解

c++的三大特点:封装、继承、多态

其中封装:将数据和函数等集合在一个单元中(即类)。被封装的类通常称为抽象数据类型。封装的意义在于保护或者防止代码(数据)被我们无意中破坏。
为了能够实现数据封装的功能特性,就产生了公有权限、私有权限、保护权限;
权限的访问性文字表示:
权限其实就是对类成员的可访问性。
1.公有成员
类可以访问,
类对象可以访问,
通过公有继承的派生类可以访问,
通过私有继承的派生类可以访问,
通过保护继承的派生类可以访问,
通过公有继承的派生类的对象可以访问,
通过私有继承的派生类的对象不可以访问,
通过保护继承的派生类的对象不可以访问。
2.私有成员
类可以访问,
类对象不可以访问,
通过公有继承的派生类不可以访问,
通过私有继承的派生类不可以访问,
通过保护继承的派生类不可以访问,
通过公有继承的派生类的对象不可以访问,
通过私有继承的派生类的对象不可以访问,
通过保护继承的派生类的对象不可以访问。
3.保护成员
类可以访问,
类对象不可以访问,
通过公有继承的派生类可以访问,
通过私有继承的派生类可以访问,
通过保护继承的派生类可以访问,
通过公有继承的派生类的对象不可以访问,
通过私有继承的派生类的对象不可以访问,
通过保护继承的派生类的对象不可以访问。
但是这里这样只从字面意思上去看很难理解、感觉有点生涩;其实很容易理解,c++为了能够更好的实现封装将代码的作用域分为了三个部分:类内部、类的派生类、类的对象三个部分;类内部是指类的内部函数、类内部的成员、类的内部成员变量,类的对象属于类的外部;

公有成员作用于:类的内部、类的派生类和类的对象三个作用域;
保护成员作用于:类的内部、类的派生类两个作用域
私有成员作用于:类内部一个作用域
在这里插入图片描述
公有成员->保护成员->私有成员其作用域逐渐减小;在作用域不改变作用域的的情况下,其作用域的作用范围始终是这样子;

作用域的改变

作用域的变化: 继承导致的作用域的改变,公有继承、保护继承、私有继承导致的作用域的变化;
公有继承: 作用域不发生改变,原来的属于基类的公有成员被派生类继承之后依然属于派生类的公有成员;原来属于基类的保护类的成员被派生类继承之后依然属于派生类的保护成员;原来属于基类的私有成员被派生类继承之后属于派生类的私有成员;作用域不发生改变;
保护继承: 作用域发生改变,原来的属于基类的公有成员被派生类继承之后作用域降低为属于派生类的保护成员;原来属于基类的保护类的成员被派生类继承之后依然属于派生类的保护成员;原来属于基类的私有成员被派生类继承之后属于派生类的私有成员;只是将基类的公有成员的作用域降低为了保护成员的作用域,将作用域大于保护类成员的全部降低为保护类成员的作用域;
私有继承: 作用域发生改变,原来的属于基类的公有成员被派生类继承之后作用域降低为属于派生类的私有成员;原来属于基类的保护类的成员被派生类继承之后作用域降低为属于派生类的私有成员;原来属于基类的私有成员被派生类继承之后属于派生类的私有成员;将基类的公有成员的作用域和保护成员的作用域全部降低为了私有成员的作用域,将作用域大于私有类成员的全部降低为私有类成员的作用域;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值