类的访问权限

类的访问权限有三种:

  • 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的作用详解相关推荐

  1. python中文意思k-对python中的*args与**kwgs的含义与作用详解

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...

  2. Xposed源码剖析——app_process作用详解

    Xposed源码剖析--app_process作用详解 首先吐槽一下CSDN的改版吧,发表这篇文章之前其实我已经将此篇文章写过了两三次了.就是发表不成功.而且CSDN将我的文章草稿也一带>删除掉 ...

  3. java this关键字的使用_Java this 关键字的使用方法详解

    Java this 关键字的使用方法详解 构造方法中的this关键字 构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用.但如果一个 ...

  4. python什么意思k_对python中的*args与**kwgs的含义与作用详解

    对python中的*args与**kwgs的含义与作用详解 在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数, ...

  5. args在python中什么意思_对python中的*args与**kwgs的含义与作用详解

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...

  6. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

  7. 饥荒海难机器人怎么用_饥荒海难机器人作用详解 机器人有什么用

    饥荒海难中有很多人物角色可以让玩家选择,其中机器人因为有其独特的玩法而受到了很多玩家的喜爱.对于那些没玩过机器人的玩家,可能会有疑问机器人好玩吗?下面就让小编向你简单介绍下机器人. 饥荒海难机器人好玩 ...

  8. 正则表达式中模式修正符作用详解(i、g、m、s、x、e)

    正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或a ...

  9. Linux(centos)系统各个目录的作用详解

    转自:Linux(centos)系统各个目录的作用详解 现在公司的服务器使用CentOS系统,在网上找到了这篇介绍linux各个目录的文章,觉得十分不错,所以拿来存个档. 整理之后如下: 文件系统的类 ...

  10. linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...

    作为一个linux入门级使用者,gcc/g++的简单操作已经用过多次, 但是有时稍微复杂一点的程序就会使用到库.在遇到问题的时候我查了挺多前辈总结的资料,也留个脚本希望对朋友们有个帮助.如果也能处理你 ...

最新文章

  1. char*,const char*,string的相互转换 C++
  2. (转)Activity的四种launchMode
  3. Matlab学习笔记——二进制文件的读写
  4. 1.3 安装Oracle遇到的问题-yum更新配置
  5. hive的udf,udaf,udtf各自依賴兩種class(转载+分析整理)
  6. 操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...
  7. Linux 内核完成接口
  8. 算法(二叉树-矩阵-堆排序)
  9. 201521123035《Java程序设计》第八周学习总结
  10. vSAN其实很简单-vSAN盘他之重新部署vCenter
  11. 客户端(前端)Ajax中Get请求和Post请求的区别
  12. Hadoop学习之web查看HADOOP以及文件的上传和下载
  13. nginx源码安装及配置https自签名
  14. CiteSpace中的中介中心性(betweenness)的理解(包含度中心性(degree)、接近中心性(closeness))
  15. RAII惯用法:C++资源管理的利器
  16. java上下载的ex表格打不开怎么回事_Java 下载 Excel文件打不开
  17. facebook 添加好友_如何对Facebook帖子添加不同的React(如心脏或表情符号)
  18. 郁闷的出纳员 (splay) 题解
  19. WIN32下实现输入法所需要的一些必要消息、函数和说明
  20. NYOJ284坦克大战

热门文章

  1. 【总结整理】关于挪车和虚拟号的思考-转载v2ex
  2. 目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼
  3. 如何查看公众号的第一篇文章
  4. 解决手机不能设置DeviceOwner权限提示already provisioned问题
  5. ion-infinite-scroll上拉加载 ion-refresher下拉刷新
  6. 接地/漏电(原理图)/接零/零线保护
  7. Browserslist: caniuse-lite is outdated. Please run next command `npm update`
  8. Nginx反向代理域名映射
  9. Unity3D游戏开发引擎的产品特点
  10. 人工智能救灾减灾应用_Bluemixathon挑战的前5个救灾应用程序