C++类訪问控制及继承
一、C++类的訪问控制有三类:public,protected和private。
| 类訪问控制符 | 类成员可被哪些对象訪问 |
| public | 1、类的成员函数。2、类对象。3、友元。4、子类成员函数 |
| protected | 1、类的成员函数。2、友元。3、子类成员函数 |
| private | 1、类的成员函数。2、友元 |
二、C++类的继承
继承方式也有三种:public,protected和private。
继承之后,基类成员的可訪问性会发生变化,例如以下表:
public继承
| 基类 | public | protected | private |
| 子类 | public | protected | 不可见 |
protected继承
| 基类 | public | protected | private |
| 子类 | protected | protected | 不可见 |
private继承
| 基类 | public | protected | private |
| 子类 | private | private | 不可见 |
从上面能够看出,经过继承后,基类的成员訪问性会发生改变,派生类对其的訪问仍然遵从类的訪问控制规则。有关三种继承方式,派生类对基类成员的訪问说明,网上有非常大网友写了大量的文章,只是我认为文字说明非常easy把人绕晕,反而丢掉了其本质。我以为继承没有网友说的那么麻烦,就是基类的可訪问性在派生类中发生了改变,然后,派生类再使用类訪问控制规则对其进行訪问就可以。
值得注意的地方有两个:
一、基类中的private成员在派生类中是不可见的,即无法通过派自己的成员函数去訪问,但能够通过继承来的成员函数訪问。
二、private继承,基类的public和protected成员都成为派生类中的private成员,这样,假设对派生类再派生一个子类,那么,在派生的子类中,将无法直接通过该子类的成员函数訪问继承来的成员;
三、派生类从基类中无法继承的是哪些成员
派生类无法从基类中继承的成员有三种:
1、构造函数和析构函数
2、赋值操作符(operator=()member)
3、友元
C++类訪问控制及继承的更多相关文章
- 訪问控制 protected, public, private 对照
OOP 3大特性:数据抽象,继承,动态绑定 3中訪问标号 protected, public, private 对照 用类进行数据抽象:用继承类继承基类的成员,实现继承.通过将基类对应函数声明为vir ...
- JAVA基础之訪问控制权限(封装)
包:库单元 1.当编写一个Java源码文件时.此文件通常被称为编译单元(有时也被称为转译单元). 2.每一个编译单元都必须有一个后缀名.java,而在编译单元内则能够有一个public类,该类名称必须 ...
- Phalcon 訪问控制列表 ACL(Access Control Lists ACL)
Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问 ...
- php訪问控制
訪问控制通过keywordpublic,protected和private来实现. 被定义为公有的类成员能够在不论什么地方被訪问.被定义为受保护的类成员则能够被其自身以及其子类和父类訪问.被定义为私有 ...
- C++ 訪问控制权限图解
基类訪问权限 类继承方式 子类訪问权限 public public protected public protected private No Access p ...
- 关于Apacheserver的訪问控制
Apache的訪问控制指对不论什么资源的不论什么方式的訪问控制. 一.基于主机或者IP地址的控制 这样的訪问控制基于訪问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令.实现同意或者禁 ...
- ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝
ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝 注意:须要在system用户下使用命令 须要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建訪问控 ...
- MFC 一个类訪问还有一个类成员对象的成员变量值
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...
- [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
应用场景:图片等资源须要设置权限,如:仅仅有认证过的用户才干訪问自己的图片. 解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括.故在安装时要加上- ...
随机推荐
- 【Android】Activity的菜单机制和方法解析
Activity有一套机制来实现对菜单的管理,方法如下: 1. 初始化菜单 public boolean onCreateOptionsMenu(Menu menu) 此方法用于初始化菜单,其中men ...
- 自定义PopupWindow动画效果
public class RollActivity extends Activity { private View view; private Button btn; private PopupWin ...
- response和request
请求响应流程图 response response是用来向客户端响应的对象! 需要回忆一下http响应内容: l 首行:状态码 l 响应头: 1头1值,1头多值: l 响应体(正文):html ...
- SuperSocket快速入门(二):启动程序以及相关的配置
如何快速启动第一个程序 既然是快速入门,所以,对于太深奥的知识点将不做讲解,会在后续的高级应用章节中,会对SS进行拆解.所有的实例90%都是来自SS的实例,外加本人的注释进行讲解. 一般应用而言,你只 ...
- 关于this的指向问题
一个关于this指向而引发的血案... 在测试this指向的程序中,我写错了id对象,结果呢,居然也有效果,这真是超于我意料之外太多了,我以为自己写错了,结果一样可以用....... <div ...
- float和double数据类型的声明,转换和计算
声明时,只要有小数部分float必须加F/f,而double却不用 //float的声明只要有小数部分就要加F,不然会报不能隐式的将double类型转换为float类型. float f1 = 1;/ ...
- C语言基础学习基本数据类型-int类型与int变量
int类型与int变量 针对不同的用途,C语言提供了多种整数类型.各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值. 在之前的实例中你已经看到过,int关键字用于声明整型变量. int类 ...
- HTML&CSS基础学习笔记1.6-html的文本操作标签
文本也许是HTML里最常见的元素了,所以我们有必要对HTML的文本操作标签做下认识. 1. <em>,<i>内的文字呈现为倾斜效果: 2. <strong>,< ...
- pyqt5消息框QMessageBox
QMessageBox消息框有以下几种类型: QMessageBox.information 信息框 QMessageBox.question 问答框 QMessageBox.warning ...
- Android4.0强制横屏竖屏
Android的启动默认是横屏或者竖屏我们的TV本来是横屏显示,但是有客户竟然要竖屏显示,昨天快下班收到的需求,竟然说7.19就要搞定.思路有2个,一个就是修改LCD的默认输出,但是这个不是我这个水平 ...