C++的三种封装层级
C++的三种封装层级
我们都知道C++的一个好处是封装,在类中有三个封装层次,也是访问的限制,那我们来探索一下public、protect、private这三个家伙。
在定义类中的访问限制
- public:以下的这些成员和方法公开为外界使用,自身、子类都可以使用
- protect:以下的这些成员和方法只限成员本身和子类进行使用,不对其他开放
- private:以下这些成员和方法只能自己使用,不对外界和子类开放
下面我们上一盘栗子给各位看官吃吃:
//定义一个基类
class base {
//在内部完全能随便使用public、protect和private三个级别的东西
public:int a;void af() { cout << a << endl; bf(); cf(); };protected:int b;void bf() { cout << b << endl; af(); cf(); };private:int c;void cf() { cout << c << endl; af(); bf(); };public:base():a(1),b(2),c(3) {};~base() {};
};class drive :public base {void fun() {//public级别的能过使用cout << a << endl;af();//protect级别的也能过使用cout << b << endl;bf();//但private级别的不能使用了,以下两行会报错cout << c << endl;XXXXXXXXXXXXXXcf();XXXXXXXXXXXXXXXXXXXXX}
};int main() {base t;//public级别能在外界调用cout << t.a << endl;t.af();//但protect和private级别的就不能再外界调用了,以下四行会报错cout << t.b << endl;XXXXXXXXXXXt.bf();XXXXXXXXXXXXcout << c << endl;XXXXXXXXXXXXXXc.cf();XXXXXXXXXXXXXXXdrive d;//publict继承过来后public级别的能过调用d.a;d.af();//但public继承过来的protect和private就不能调用了d.b;XXXXXXXXXXXxd.bf();XXXXXXXXXXxd.c;XXXXXXXXXXXd.cf();XXXXXXXXXXXXX
}
下面是封装级的一个整理:
继承中的三个封装级
在不同的继承方式中,父类中的封装级会发生不同的变化,下面是继承中相应的三个封装继承的变化:
简单概括一下就是父类中private级别的封装子类不会继承;public的继承会维持父类原来的public、protect前两者的封装级别,而protect继承前两者都会成为protect,private继承将前两者变成private
C++的三种封装层级相关推荐
- 秀操作:函数宏的三种封装方式
关注.星标公众号,直达精彩内容 1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销. 函数宏本质上为宏,可以直接进 ...
- 秀操作 | 函数宏的三种封装方式
作者:☆星轨★ 链接:https://blog.csdn.net/qq_35692077/article/details/102994959 1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为 ...
- 用户运营的三种思维层级,你在哪一层?
本文为PMCAFF专栏作者刘玮冬出品 昨天在朋友圈偶然看到了一道非常专业的"用户运营面试题",引起了大家的广泛讨论,让我也燃起了解答这道问题的极大兴趣. 该面试题如下: 为了使你在 ...
- php 封装模式,PHP设计模式(三):封装
Introduction 面向对象编程中,一切都是对象,对一个对象的封装,也成了面向对象编程中必不可少的部分.和C/C++,Java,Python等语言一样,PHP也支持封装. 封装/Encapsul ...
- 结构光、双目、ToF——三种3D技术对比
本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...
- ES6中的Class回顾总结三:封装与多态
ES6中的class面向对象三要素之二是封装.今天继续回顾. 在Java中,实现了public完全开放.protected对子类开放.private对自己开放这三种封装的方式.但在ES6中目前并不支持 ...
- Altium Designer画元器件封装三种方法
下面跟大家分享Altium Designer画元器件封装的三种方法. 如有错误,望大家指正. 一.手工画法. (1)新建个PCB库. 下面以STM8L151C8T6为例画封装,这是它的封装信息 设置好 ...
- 亿级PV请求的三种负载均衡技术
在互联网+不断渗透到生活中的今天,各种各样的网络服务存在在我们身边,他们的访问流量也是大得惊人.一个大型网站(百万PV以上)想要正常访问,单单靠一台服务器是不可能提供稳定服务的.这时候就需要用负载均衡 ...
- 解决no session问题的三种方式
1.get() 采用立即加载方式,而 load() 采用延迟加载; 2.get() 方法执行的时候,会立即向数据库发出查询语句,而 load() 方法返回的是一个代理(此代理中只有一个 OID 属性) ...
最新文章
- x86 X64指令集之间的关系
- 英特尔紧急召回SB主板,Intel 6系列芯片组设计缺陷
- VC++ 获取系统时间的方法汇总
- MapReduce+Docker:Archer简化Netflix媒体处理
- SAP Fiori extension hook added via note
- CF590E-Birthday【AC自动机,最大独立集】
- python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
- 黑群晖教程:(二)黑群晖安装DSM6.1x(图文)
- GPS精密星历文件下载地址
- jieba分词的原理
- C语言利用getchar()与while循环解决跳步问题
- 理解服务器证书 CASSL
- 组态王 6.55 启停plc_PLC编程进料PLC编程项目
- tftp linux 配置管理
- 誓成运动科技第一股:为何Keep忘初心
- “武汉加油”“中国加油”
- WordPress中文汉字用户名不能注册怎么办?
- Python编程PTA题解——一帮一学习小组
- 从游戏到赚钱,区块链如何改变电子游戏的面貌?
- matlab与vs混合编程,matlab与vs混合编程/matlab移植
热门文章
- Machine Learning Notes Ⅲ
- Android studio中添加外部的jar包
- ant copy 复制文件用法
- 《为大量出现的KPI流快速部署异常检测模型》 笔记
- mysql插入报主键冲突,解决方法主键索引重新排序
- 卷积神经网络——第一周 卷积神经网络基础——第二部分
- 机器学习算法:scikit-learn 线性回归算法总结
- 腾讯测试王者荣耀网速的软件,腾讯游戏启用账号时长共享功能 开启人脸识别测试有效果吗?以《王者荣耀》为试点...
- c语言玫瑰花图形程序,一个玫瑰花的程序
- php redis用途,redis可以做什么?