我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员。然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限

三种访问权限
public:可以被任意实体访问
protected:只允许子类及本类的成员函数访问
private:只允许本类的成员函数访问

三种继承方式

public 继承
protect 继承
private 继承

组合结果
基类中 继承方式 子类中
public & public继承 => public
public & protected继承 => protected
public & private继承 = > private

protected & public继承 => protected
protected & protected继承 => protected
protected & private继承 = > private

private & public继承 => 子类无权访问
private & protected继承 => 子类无权访问
private & private继承 = > 子类无权访问

由以上组合结果可以看出
1、public继承不改变基类成员的访问权限
2、private继承使得基类所有成员在子类中的访问权限变为private
3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。
4、基类中的private成员不受继承方式的影响,子类永远无权访问。

此外,在使用private继承时,还存在另外一种机制:准许访问 。
我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员。然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限。
C++支持以两种方式实现该目的
方法一,使用using 语句,这是C++标准建议使用的方式
方法二,使用访问声明,形式为 base-class::member;, 位置在子类中适当的访问声明处。(注,只能恢复原有访问权限,而不能提高或降低访问权限)
c++ 中为什么要定义public protect private 三种访问权限?
有些我们需要给外面看的,也就是对外接口,那么就是public,如果没有,那么我们做的工作将是毫无意义的,(别人没法用)
如果我们不想让别人知道内部的实现细节,那么就是private,比如,我们这么:
复制代码 代码如下:

public:
count()
{
  mycount();
}
private:
mycount();

这样的,count是对外的接口,而实现的时候,我们不想让外面知道怎么实现的,就用private,防止它用mycount!
如果我们不想让别人知道,想让自己的孩子什么的知道(这里涉及到继承),那么就可以作为protected!
这样的话,private是自己私有的,protected是可以让孩子知道的,public是公开的!

C++中的三种继承public,protected,private详细解析相关推荐

  1. C++ 中的三种继承public , protected, private

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

  2. C++中的三种继承public,protected,private(转)

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

  3. [转]C++中的三种继承public,protected,private

    链接:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html

  4. php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...

    类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...

  5. C++类中的访问权限问题---public/protected/private

    派生类继承了基类的全部数据成员和除了构造.析构函数之外的全部成员函数,但是这些成员的访问属性在派生的过程中通过继承方式可以来调整. 第一:private,public,protected方法的访问范围 ...

  6. winform 填充圆形 锯齿_Qt项目中,三种图形渐变填充方式详细总结

    总第40篇 本文主要详细梳理了Qt项目开发过程中,对图形的三种渐变填充方式,以便后面参考. 在Qt中,目前支持三种渐变填充方式,这三种方式都是QGradient的子类,它可以与画刷 QBrush组合使 ...

  7. java 权限修饰符大小_Java中访问权限修饰符public protected private, 缺省默认权限的用法总结...

    1.访问权限符: (1)public: 对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中. 对于类来说: 也是一样. (2)friendly: 对于成员老说:如果一个类的成员没 ...

  8. protect 继承_c++三种继承方式public,protect,private

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

  9. 不同级别成员对应三种继承的结果:

    怎么解释呢? 首先,private,私有的,这是绝对的,不会受继承而变化,只对本类(即使是基类)可见. 剩下的public和 protected 成员,三种继承,2×3 = 6.私有继承在派生类中全为 ...

最新文章

  1. 印度Thermax携FRENELL执行亚洲首个集成太阳能热电厂
  2. dataset中有多个表,返回XML字符串设置主从关系
  3. 自适应滤波器_有源电力滤波器的使用意义和作用
  4. MATLAB-字符串
  5. 跟我一起写 Makefile(十)
  6. mysql互为主从利弊_MySQL互为主从复制常见问题
  7. STM32 之五 Core Coupled Memory(CCM)内存
  8. linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
  9. NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
  10. 每小时的数据mysql_荐 mysql查询每小时数据和上小时数据的差值
  11. AI 线上峰会 | 人工智能技术解析与实战
  12. JavaScript回调函数的高手指南
  13. 前端自动化打包工具--webpack
  14. 利用 mount 指令解决 Read-only file system的问题
  15. linux中红帽系统下载地址,Redhat8.3系统下载
  16. matlab面板数据怎么求增长率的公式,增长率怎么计算公式(7个步骤详解)
  17. MAE源代码理解 part2 : 预训练调试
  18. java拆弹_[逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
  19. 《O N E 影视厅》管理系统——WAMP架构win10+apache+mysql+php
  20. 数字识别digits.png研究

热门文章

  1. Rnn Lstm Gru Sru学习小结
  2. 五步开启IDEA热部署
  3. 如何使用CorelDRAW 2019做出透明效果艺术字
  4. java桌游设计,java毕业设计_springboot框架的桌游吧管理系统
  5. 云知声嘀咕AI电话机器人:可定制化的人工智能电话机器人解决方案 | 百万人学AI评选
  6. css的常见6种布局方式
  7. rsync+inotify介绍
  8. flask前后端交互
  9. 用word中邮件合并实现批量打印姓名地址的功能
  10. java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解