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. 秀操作:函数宏的三种封装方式

    关注.星标公众号,直达精彩内容 1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销. 函数宏本质上为宏,可以直接进 ...

  2. 秀操作 | 函数宏的三种封装方式

    作者:☆星轨★ 链接:https://blog.csdn.net/qq_35692077/article/details/102994959 1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为 ...

  3. 用户运营的三种思维层级,你在哪一层?

    本文为PMCAFF专栏作者刘玮冬出品 昨天在朋友圈偶然看到了一道非常专业的"用户运营面试题",引起了大家的广泛讨论,让我也燃起了解答这道问题的极大兴趣. 该面试题如下: 为了使你在 ...

  4. php 封装模式,PHP设计模式(三):封装

    Introduction 面向对象编程中,一切都是对象,对一个对象的封装,也成了面向对象编程中必不可少的部分.和C/C++,Java,Python等语言一样,PHP也支持封装. 封装/Encapsul ...

  5. 结构光、双目、ToF——三种3D技术对比

    本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...

  6. ES6中的Class回顾总结三:封装与多态

    ES6中的class面向对象三要素之二是封装.今天继续回顾. 在Java中,实现了public完全开放.protected对子类开放.private对自己开放这三种封装的方式.但在ES6中目前并不支持 ...

  7. Altium Designer画元器件封装三种方法

    下面跟大家分享Altium Designer画元器件封装的三种方法. 如有错误,望大家指正. 一.手工画法. (1)新建个PCB库. 下面以STM8L151C8T6为例画封装,这是它的封装信息 设置好 ...

  8. 亿级PV请求的三种负载均衡技术

    在互联网+不断渗透到生活中的今天,各种各样的网络服务存在在我们身边,他们的访问流量也是大得惊人.一个大型网站(百万PV以上)想要正常访问,单单靠一台服务器是不可能提供稳定服务的.这时候就需要用负载均衡 ...

  9. 解决no session问题的三种方式

    1.get() 采用立即加载方式,而 load() 采用延迟加载; 2.get() 方法执行的时候,会立即向数据库发出查询语句,而 load() 方法返回的是一个代理(此代理中只有一个 OID 属性) ...

最新文章

  1. x86 X64指令集之间的关系
  2. 英特尔紧急召回SB主板,Intel 6系列芯片组设计缺陷
  3. VC++ 获取系统时间的方法汇总
  4. MapReduce+Docker:Archer简化Netflix媒体处理
  5. SAP Fiori extension hook added via note
  6. CF590E-Birthday【AC自动机,最大独立集】
  7. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
  8. 黑群晖教程:(二)黑群晖安装DSM6.1x(图文)
  9. GPS精密星历文件下载地址
  10. jieba分词的原理
  11. C语言利用getchar()与while循环解决跳步问题
  12. 理解服务器证书 CASSL
  13. 组态王 6.55 启停plc_PLC编程进料PLC编程项目
  14. tftp linux 配置管理
  15. 誓成运动科技第一股:为何Keep忘初心
  16. “武汉加油”“中国加油”
  17. WordPress中文汉字用户名不能注册怎么办?
  18. Python编程PTA题解——一帮一学习小组
  19. 从游戏到赚钱,区块链如何改变电子游戏的面貌?
  20. matlab与vs混合编程,matlab与vs混合编程/matlab移植

热门文章

  1. Machine Learning Notes Ⅲ
  2. Android studio中添加外部的jar包
  3. ant copy 复制文件用法
  4. 《为大量出现的KPI流快速部署异常检测模型》 笔记
  5. mysql插入报主键冲突,解决方法主键索引重新排序
  6. 卷积神经网络——第一周 卷积神经网络基础——第二部分
  7. 机器学习算法:scikit-learn 线性回归算法总结
  8. 腾讯测试王者荣耀网速的软件,腾讯游戏启用账号时长共享功能 开启人脸识别测试有效果吗?以《王者荣耀》为试点...
  9. c语言玫瑰花图形程序,一个玫瑰花的程序
  10. php redis用途,redis可以做什么?