C++中的三种继承public,protected,private详细解析
我们已经知道,在基类以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详细解析相关推荐
- C++ 中的三种继承public , protected, private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- C++中的三种继承public,protected,private(转)
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- [转]C++中的三种继承public,protected,private
链接:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html
- php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...
类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...
- C++类中的访问权限问题---public/protected/private
派生类继承了基类的全部数据成员和除了构造.析构函数之外的全部成员函数,但是这些成员的访问属性在派生的过程中通过继承方式可以来调整. 第一:private,public,protected方法的访问范围 ...
- winform 填充圆形 锯齿_Qt项目中,三种图形渐变填充方式详细总结
总第40篇 本文主要详细梳理了Qt项目开发过程中,对图形的三种渐变填充方式,以便后面参考. 在Qt中,目前支持三种渐变填充方式,这三种方式都是QGradient的子类,它可以与画刷 QBrush组合使 ...
- java 权限修饰符大小_Java中访问权限修饰符public protected private, 缺省默认权限的用法总结...
1.访问权限符: (1)public: 对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中. 对于类来说: 也是一样. (2)friendly: 对于成员老说:如果一个类的成员没 ...
- protect 继承_c++三种继承方式public,protect,private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- 不同级别成员对应三种继承的结果:
怎么解释呢? 首先,private,私有的,这是绝对的,不会受继承而变化,只对本类(即使是基类)可见. 剩下的public和 protected 成员,三种继承,2×3 = 6.私有继承在派生类中全为 ...
最新文章
- 印度Thermax携FRENELL执行亚洲首个集成太阳能热电厂
- dataset中有多个表,返回XML字符串设置主从关系
- 自适应滤波器_有源电力滤波器的使用意义和作用
- MATLAB-字符串
- 跟我一起写 Makefile(十)
- mysql互为主从利弊_MySQL互为主从复制常见问题
- STM32 之五 Core Coupled Memory(CCM)内存
- linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
- NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
- 每小时的数据mysql_荐 mysql查询每小时数据和上小时数据的差值
- AI 线上峰会 | 人工智能技术解析与实战
- JavaScript回调函数的高手指南
- 前端自动化打包工具--webpack
- 利用 mount 指令解决 Read-only file system的问题
- linux中红帽系统下载地址,Redhat8.3系统下载
- matlab面板数据怎么求增长率的公式,增长率怎么计算公式(7个步骤详解)
- MAE源代码理解 part2 : 预训练调试
- java拆弹_[逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
- 《O N E 影视厅》管理系统——WAMP架构win10+apache+mysql+php
- 数字识别digits.png研究