C++关键字protected的作用详解
类的访问权限
类的访问权限有三种:
- public 公共权限: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
- protected 保护权限: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
- private 私有权限:只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。
三种权限的区别:
- public:可以被任意实体访问
- protected:只允许本类及子类的成员函数访问
- private:只允许本类的成员函数访问
继承
继承的方式有三种:
- 公共继承
- 保护继承
- 私有继承
继承后的属性变化:
- 使用private继承,基类的所有方法在子类中变为private;
- 使用protected继承,将基类中public成员变为子类的protected成员,其它成员的访问权限不变;
- 使用public继承,基类中的方法属性不发生改变;
保护成员的作用:
假如基类Base中有一个成员b,设计要求隐藏这个成员,但是在派生类的成员函数中又经常访问到。如何设计呢?
- 选择public,那么其安全性受到威胁。
- 选择private,派生类无法访问这个数据,只能间接访问。
所以我们有了protected!像上述b这种,出于隐藏的目的不能设为公有public,但又需要在派生类的成员函数中经常访问到的基类成员,将它们设置为保护成员,既能起到隐藏的目的,又避免了派生类成员函数要访问它们时只能间接访问所带来的麻烦。
保护成员的可访问范围比私有成员大,比公有成员小。能访问私有成员的地方都能访问保护成员。
保护成员扩大的访问范围表现在:基类的保护成员可以在派生类的成员函数中被访问。
示例:
#include<iostream>
using namespace std;class Base{public: int a;protected: int b;private: int c;
};class son:public Base{void show(){cout<<a<<endl; //可访问 public权限 cout<<b<<endl; //可访问 protected权限 //cout<<c<<endl; //不可访问 }
};int main() {son A;cout<<A.a<<endl; //对象可以访问public成员//cout<<A.b<<endl; //protected无法访问 return 0;
}
C++关键字protected的作用详解相关推荐
- python中文意思k-对python中的*args与**kwgs的含义与作用详解
在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...
- Xposed源码剖析——app_process作用详解
Xposed源码剖析--app_process作用详解 首先吐槽一下CSDN的改版吧,发表这篇文章之前其实我已经将此篇文章写过了两三次了.就是发表不成功.而且CSDN将我的文章草稿也一带>删除掉 ...
- java this关键字的使用_Java this 关键字的使用方法详解
Java this 关键字的使用方法详解 构造方法中的this关键字 构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用.但如果一个 ...
- python什么意思k_对python中的*args与**kwgs的含义与作用详解
对python中的*args与**kwgs的含义与作用详解 在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数, ...
- args在python中什么意思_对python中的*args与**kwgs的含义与作用详解
在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...
- VMware虚拟机文件夹中各文件作用详解
VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...
- 饥荒海难机器人怎么用_饥荒海难机器人作用详解 机器人有什么用
饥荒海难中有很多人物角色可以让玩家选择,其中机器人因为有其独特的玩法而受到了很多玩家的喜爱.对于那些没玩过机器人的玩家,可能会有疑问机器人好玩吗?下面就让小编向你简单介绍下机器人. 饥荒海难机器人好玩 ...
- 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或a ...
- Linux(centos)系统各个目录的作用详解
转自:Linux(centos)系统各个目录的作用详解 现在公司的服务器使用CentOS系统,在网上找到了这篇介绍linux各个目录的文章,觉得十分不错,所以拿来存个档. 整理之后如下: 文件系统的类 ...
- linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...
作为一个linux入门级使用者,gcc/g++的简单操作已经用过多次, 但是有时稍微复杂一点的程序就会使用到库.在遇到问题的时候我查了挺多前辈总结的资料,也留个脚本希望对朋友们有个帮助.如果也能处理你 ...
最新文章
- char*,const char*,string的相互转换 C++
- (转)Activity的四种launchMode
- Matlab学习笔记——二进制文件的读写
- 1.3 安装Oracle遇到的问题-yum更新配置
- hive的udf,udaf,udtf各自依賴兩種class(转载+分析整理)
- 操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...
- Linux 内核完成接口
- 算法(二叉树-矩阵-堆排序)
- 201521123035《Java程序设计》第八周学习总结
- vSAN其实很简单-vSAN盘他之重新部署vCenter
- 客户端(前端)Ajax中Get请求和Post请求的区别
- Hadoop学习之web查看HADOOP以及文件的上传和下载
- nginx源码安装及配置https自签名
- CiteSpace中的中介中心性(betweenness)的理解(包含度中心性(degree)、接近中心性(closeness))
- RAII惯用法:C++资源管理的利器
- java上下载的ex表格打不开怎么回事_Java 下载 Excel文件打不开
- facebook 添加好友_如何对Facebook帖子添加不同的React(如心脏或表情符号)
- 郁闷的出纳员 (splay) 题解
- WIN32下实现输入法所需要的一些必要消息、函数和说明
- NYOJ284坦克大战
热门文章
- 【总结整理】关于挪车和虚拟号的思考-转载v2ex
- 目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼
- 如何查看公众号的第一篇文章
- 解决手机不能设置DeviceOwner权限提示already provisioned问题
- ion-infinite-scroll上拉加载 ion-refresher下拉刷新
- 接地/漏电(原理图)/接零/零线保护
- Browserslist: caniuse-lite is outdated. Please run next command `npm update`
- Nginx反向代理域名映射
- Unity3D游戏开发引擎的产品特点
- 人工智能救灾减灾应用_Bluemixathon挑战的前5个救灾应用程序