C++ 类访问控制的条件总结
C++ 类访问控制的条件总结
最近在使用C++创建类的时候,忽然发现自己对于类访问控制 public,protected,private 的作用没有理解透彻,后来就查了些资料,这里以作记录。
访问控制
C++类的重要属性就是封装和继承。因此,最关键的问题就是权限 的问题,public,protected,private 控制的就是访问权限。
public | protected | private | |
---|---|---|---|
类成员是否可以访问 | Yes | Yes | Yes |
友元函数是否可以访问 | Yes | Yes | Yes |
子类是否可以访问 | Yes | Yes | No |
类的实例化对象是否可以访问 | Yes | No | No |
继承
三种继承方式导致的权限变化:
public | protected | private | |
---|---|---|---|
public继承 | public | protected | private |
protected继承 | protected | protected | private |
private继承 | private | private | private |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
VC++中HTControl控件类的CHTSlider控制杆控件类简介
本文所述的是HTControl控件中的一个控制杆控件类文件代码,此类是完全独立的,没有任何基类.直接由WIN32 API实现.你可以在SDK,MFC,wxWidget等等方式下使用它.控制中包括一个垂直的控制杆控件,使用方式和水平的完全相同.窗体必须动态创建,具体代码段如下: m_HTSliderR.Create(130, 500, 400, 14, m_hWnd, iChildId++, 0, 9, 14); m_HTSliderR.SetBgPic(_T(".\\pic\\SliderBg.
-
C++编程中私有和保护以及公有的类成员访问控制
private 语法 private: [member-list] private base-class 备注 当位于类成员列表之前时,private 关键字指定这些成员仅可从成员函数和该类的友元中进行访问.这适用于声明到下一个访问指示符或类的末尾的所有成员. 当位于基类的名称之前时,private 关键字指定基类的公共成员和受保护成员为派生类的私有成员. 类中成员的默认访问是私有的.结构或联合中成员的默认访问是公共的. 基类的默认访问对于类是私有的,而对于结构是公共的. 联合不能具有基类. 例
-
VC++中HTControl控制类使用之CHTDlgBase对话框基类实例
本文所述为VC++界面编程的一个MFC例子,基于HTControl控件类的CHTDlgBase对话框基类主文件代码.该程序可完成动态创建框架窗体,窗体外观(客户区与非客户区),调整窗体大小,无效子窗口的控制等功能. 具体实现代码如下: /**************************************************************************** | Copyright (c) 2012, | ******************************
-
C++ 类访问控制的条件总结
C++ 类访问控制的条件总结 最近在使用C++创建类的时候,忽然发现自己对于类访问控制 public,protected,private 的作用没有理解透彻,后来就查了些资料,这里以作记录. 访问控制 C++类的重要属性就是封装和继承.因此,最关键的问题就是权限 的问题,public,protected,private 控制的就是访问权限. public protected private 类成员是否可以访问 Yes Yes Yes 友元函数是否可以访问 Yes Yes Yes 子类是否可以访问
-
C++ primer类的基础精讲
目录 定义抽象数据类型 初探this和 构造函数 访问控制和封装 友元 类的其他特性 可变数据成员 返回*this的成员函数 友元类 构造函数再探 构造函数初始值列表 默认构造函数的作用 聚合类 类的静态成员 定义抽象数据类型 初探this和 struct Sales_data { string isbn(){return bookNo;} Sales_data & combine(const Sales_data&); double avg_price() const; string b
-
ruby 学习笔记(2) 类的基本使用
ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言--即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/方法都不需要声明具体(返回)类型,但其实在ruby内部,会自动根据变量的值分配类型.(可以通过 "puts 变量.class"查看) 3.ruby相对c#来讲,可能有些雷的地方在于:父类中的private成员,居然是可以在子类中使用的! ...其
-
基于JavaScript实现前端数据多条件筛选功能
有时候也会需要在前端进行数据筛选,增强交互体验.当数据可用的筛选条件较多时,把逻辑写死会给后期维护带来很大麻烦.下面是我自己写的一个简单的筛选器,筛选条件可以根据数据包含的字段动态设置. 仿照京东的筛选条件,这里就取价格区间和品牌作为测试. 代码 代码中主要使用js的过滤器Array.prototype.filter,该方法会对数组元素进行遍历检查,返回一个符合检查条件的新数组,不会改变原数组. // filter() var foo = [0,1,2,3,4,5,6,7,8,9]; var f
-
ReentrantLock源码详解--条件锁
问题 (1)条件锁是什么? (2)条件锁适用于什么场景? (3)条件锁的await()是在其它线程signal()的时候唤醒的吗? 简介 条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁. 比如,在阻塞队列中,当队列中没有元素的时候是无法弹出一个元素的,这时候就需要阻塞在条件notEmpty上,等待其它线程往里面放入一个元素后,唤醒这个条件notEmpty,当前线程才可以继续去做"弹出一个元素"的行为. 注意,这里的条件,必须是
-
spring boot中的条件装配bean的实现
条件装配 从Spring Framework 3.1开始,允许在Bean装配时增加前置条件判断. 啥是条件装配 在bean装配前的条件判断.比如@Profile(是在spring3.1中引入),@Contditional(spring4.0中引入) 实现方式:注解方式,编程方式. 假设我们现在有一个多数据求和计算的小需求,定义两种方式Java7和Java8,然后使用条件装配的方式分别装配不同的bean. 首先我们定义一个接口 public interface CalculateService {
-
JPA 使用criteria简单查询工具类方式
目录 打包JPA动态查询(CriteriaQuery) eq.ge.gt 封装JPA动态查询(CriteriaQuery) EntityManager管理器,通过spring管理 Page分页和结果封装类 IBaseDao接口实现了BaseDaoImpl IBaseDao接口 以前用jpa写了一个条件筛选的查询数据如下,才知道那么渣渣,就是一个表,根据前端来筛选数据,写的如下 首先就是判断前端传来的参数就写了那么多,现在才发现是渣渣中的渣渣,而且还费时,用criteria很快就搞定 首先创建类并
-
MyBatis反向生成Example类的使用方式
目录 MyBatis反向生成Example类使用 一.逆向工程 二.Example类的生成 三.Example类的使用 四.使用方法 MyBatis逆向工程生成Example类的方法总结 一.mapper接口中的方法解析 二.Example类解析 三.小结一下 MyBatis反向生成Example类使用 一.逆向工程 MyBatis的逆向工程不仅仅可以生成和表相对应的实体类还可以根据数据库种的表自动生成Example类,我们可以用Example类 实现条件增删改查而不用自己再去写sql语句. 二
-
JPA 使用criteria简单查询工具类方式
目录 使用criteria简单查询工具类 首先创建类并实现Specification<T>接口 新建ExpandCriterion接口 使用criteria前提是dao接口必须实现JpaSpecificationExecutor<T>接口 打包JPA动态查询(CriteriaQuery) eq.ge.gt 封装JPA动态查询(CriteriaQuery) EntityManager管理器,通过spring管理 Page分页和结果封装类 IBaseDao接口实现了BaseDaoImp
-
C++ static详解,类中的static用法说明
目录 C++static详解,类中static用法 static特点:用来控制存储方式和可见性 类中的static关键字 什么时候用static? 为什么要引入static? c++中static总结 1. 概念 2. 面向过程的static 3. 面向对象中的static 4. 小结 C++static详解,类中static用法 static特点:用来控制存储方式和可见性 ① 存储空间:静态存储区(控制变量的存储方式) 静态变量存储在静态存储区(存储在静态存储区的变量,如果不显式地对其进行初始
随机推荐
- JavaScript操作HTML DOM节点的基础教程
- MySQL——修改root密码的4种方法(以windows为例)
- JavaScript 放大镜 移动镜片效果代码
- JavaScript 面向对象编程(1) 基础
- 详解VirtualBox + CentOS 虚拟机网卡配置
- HttpServletRequest对象方法的用法小结
- 微信小程序商城项目之购物数量加减(3)
- asp.net Http异常eurl.axd出错信息解决方法
- 基于MySQL体系结构的分析
- PHP与SQL语句常用大全
- 常见php数据文件缓存类汇总
- vue2里面ref的具体使用方法
- 巧用CSS滤镜做图案文字
- js正确获取元素样式详解
- JavaScript中使用replace结合正则实现replaceAll的效果
- 在SQL Server启动时自动执行存储过程。第1/2页
- jquery中防刷IP流量软件影响统计的一点对策
- 为JavaScript添加重载函数的辅助方法
- jquery选择器之内容过滤选择器详解
- 字符串的组合算法问题的C语言实现攻略