c++中的成员访问级别和派生继承方式

2023-11-08

1.一个类中的不同变量和函数的访问属性

  总共有三种访问级别[public,private,protected]在类中定义的成员变量和成员函数的时候,如果不在变量前面加上访问级别修饰符,类中默认为私有成员变量或者私有成员函数,而在结构体中如果不写则默认为共有成员变量或共有成员函数,

什么意思呢,对于类(比如类名为a的一个类)中的成员变量或者成员函数,

||如果定义为public,那么这个变量或者函数在另外一个类(比如b)中这个b可能是一个普通类也可能是他的派生类(继承类),都可以访问,不管是通过类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问。

        属于开放的在哪里都可以用合理的方式访问;

||如果定义为private,那么这个变量或者函数在另外一个类(比如b)中,这个b可能是一个普通类也可能是他的派生类(继承类),都可以访问,不管是通过类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问都可以访问。永远都属于父类a自己的;

      属于自己的,在哪里都不可以通过这三种方式访问;

||如果定义为protected,那么这个变量或者函数在另外一个非派生类(比如b)中,是不可以访问的,如果是他的派生类(继承类)那就属于a这个类族的类是可以的,但是a的派生类,又在其他类中实例化,这个实例对象是一样可以访问a中的保护型成员变量或者成员函数,不管是通过a类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问(a *p=new a(); p->m(a的公共函数或者变量))。

    属于整个类族的,但在外部类(一个没有继承过类a的类中)不能访问;


2.对于一个类的派生类的继承方式

1.公有继承(public)

  如果类c继承了类a继承方式为public,那么父类中的公有成员和保护成员都以原来的属性保存在派生类中,保存在当前这个或者说所有其派生类中,(当然父类中私有成员还是不可以直接访问),派生类中的新定义的成员变量新成员函数可以访问到父类中的公有成员和保护成员。

   在类族以外,这个派生类的对象和成员可以访问从父类中继承来的公有成员而不能访问保护成员,如果当前这个派生类继续被公有继承,新的派生类中一样可以访问基类a和他的父类从基类继承过来的所有成员变量和函数。这就是公有继承(public)

2.私有继承(private)

  父类中的公有成员和保护成员都以私有方式,保存在当前这个或者说所有其派生类中,(当然父类中私有成员还是不可以直接访问),派生类中的新成员变量新成员函数还是可以访问到父类中的公有成员和保护成员。

但是在类族以外,这个派生类的对象和成员不能访问从父类中继承来的 公有成员和保护成员了,如果当前这个派生类继续被公有继承,新的派生类中就不能在访问基类a和他的父类从基类继承过来的所有成员变量和函数。这就是私有继承。私有继承之后基l类a的成员无法在当前派生类以后的派生类中发挥作用,一般很少使用私有继承;

3.保护继承(protected)

  父类中的公有成员和保护成员都以保护级别保存在当前这个派生类中(当然父类中私有成员还是不可以直接访问),派生类中的新成员变量新成员函数可以访问到父类中的公有成员和保护成员。

但是在类族以外,这个派生类的对象和成员不能访问从父类中继承来的 公有成员和保护成员了,如果当前这个派生类继续被公有继承,新的派生类访问遵守公有继承原则,继续作为保护级别成员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++中的成员访问级别和派生继承方式 的相关文章

随机推荐

  • 工作三年,你的存款有多少?统计出来的结果令人扎心

    最近看到一个粉丝给我留言 一个毕业三年的人 应该有多少存款 据我所知 身边大部分年轻人的存款都很少 如果你去问他们存款有多少 得到的答案很有可能是为零 甚至有很多人的存款是负数 每月工资到手就得拿去填各种窟窿 上千的房租 大几千的生活费 还
  • iOS中的autorelease

    iOS中的autorelease是一种非常重要的内存管理机制 它可以自动释放对象 从而避免内存泄漏和内存溢出等问题 在本文中 我们将详细介绍iOS中的autorelease机制 包括它的原理 使用方法以及注意事项等内容 autoreleas
  • TCP、UDP、IP报头结构体分析

    TCP UDP IP报头结构体分析 TCP数据段格式 TCP是一种可靠的 面向连接的字节流服务 源主机在传送数据前需要先和目标主机建立连接 然后 在此连接上 被编号的数据段按序收发 同时 要求对每个数据段进行确认 保证了可靠性 如果在指定的
  • c盘哪些文件可以删除?正确答案在这里!

    当我们使用电脑时 经常下意识把各种文件数据保存在c盘 导致c盘的空间越来越小 想要清理电脑缓存 c盘哪些文件可以删除 注意 清理文件之前 记得要备份好重要的数据 下面一起来看看哪些c盘文件可以删除吧 操作环境 演示机型 华硕X8AE43In
  • Python下的图像处理库,你要选哪个?

    欢迎大家关注微信公众号 baihuaML 白话机器学习 码字不易 如转载请私信我 在这里 我们一起分享AI的故事 您可以在后台留言 关于机器学习 深度学习的问题 我们会选择其中的优质问题进行回答 在进行数字图像处理时 我们经常需要对图像进行
  • location.host 与 location.hostname 的区别

    location host 与 location hostname 的区别 location host 包含端口 端口是80的话 就不显示 location hostname 不包含端口 http localhost 8888 locati
  • webgl unity_Unity WebGL中的低级插件

    webgl unity Last year we launched a series of technical blog posts on WebGL starting with a couple of posts on memory No
  • nrm 的安装和使用

    NRM介绍 官方解释 开发的npm registry 管理工具 nrm 能够查看和切换当前使用的registry 换言之nrm的作用就是方便用户切换npm的镜像源地址 npm的原始镜像源地址是在国外 国内网络访问比较慢 因此国内的某些大佬机
  • jupyter生成视频动画video anmation

    本文介绍一个正弦余弦波案例来展示jupyter生成动画过程 首先电脑安装一个叫做ffmpeg的软件 只有40M 是一个关于网页制作动画的软件 安装过程见博客 15条消息 安装ffmpeg并写入jupyter matplotlib 山晨啊8的
  • 目录遍历的三种方法

    1 目录的遍历 递归函数 def visitDir path li os listdir path for p in li pathname os path join path p if not os path isfile pathnam
  • Docker与容器的基本概念

    本文主要对Docker和容器的一些基本概念进行一个总结 一 容器与虚拟机 1 什么是容器 Docker官方对容器的解释 一句话概括 容器 Container 就是将软件打包成标准化单元 以用于开发 交付和部署 容器是打包代码及其所有依赖的软
  • mesa图解

    http www sourcecodebrowser com mesa 7 8 2 state 8c html
  • C - Divisors of the Divisors of An Integer Gym - 102040C

    题目链接 题意 就是求n 中因子的因子的个数 题解 n 中某个因子的个数就是n x的累加 证明 其实就是每次褪一层 即每次除去能除于1个3的 依次两个3的 三个3的个数 最终也就能得到3的个数 这里没必要 整除 因为是阶乘 所以即使不能整除
  • Redis初级命令

    一 常用key命令 查看所有key keys 查看key的类型 type key 返回状态1 0 True False 当传入多个key时返回or的结果 即只要有一个存在就返回True exists key key 将key从当前db移动到
  • 学生成绩管理系统数据库设计--MySQL

    MySQL 数据库设计 学生成绩管理系统 设计大纲 友情链接 1 医疗信息管理系统数据库 MySQL 2 邮件管理数据库设计 MySQL 3 点餐系统数据库设计 SQL Server 4 商品管理系统数据库设计 SQL Server 5 S
  • JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1 传统三层架构 all in one项目 传统三层架构大致可以分为表现层 业务层和持久层 数据访问层 其中表现层负责接受请求和转发请求 业务层负责处理请求 注 事务管理 日志记录等AOP类型的操作均封装在这一层 持久层主
  • 将web项目导出到远程服务器的tomcat中

    将web项目导出到远程服务器的tomcat中 前期准备 步骤 前期准备 eclipse2017创建的web项目 阿里云服务器中存在tomcat 远程连接工具 windows自带 步骤 1 在eclipse上将完成好的web项目导出为war文
  • ubuntu linux安装pytorch和torchvision

    1 下载镜像 镜像网址 https download pytorch org whl torch stable html 假设你要下载torch1 4 0版本 cp36代表你的环境是python3 6 cu100代表的是你的cuda是10
  • C语言大作业学生成绩管理系统

    1 设计要求 利用所学的知识 理论和实际结合 利用资源 采用模块化的结构 使用模仿修改自主设计相结合的方法 锻炼学生综合分析解决实际问题的编程能力 通过C语言各个函数功能来实现对学生信息的管理 学生信息包括学生姓名 学号 各科成绩 管理方式
  • c++中的成员访问级别和派生继承方式

    1 一个类中的不同变量和函数的访问属性 总共有三种访问级别 public private protected 在类中定义的成员变量和成员函数的时候 如果不在变量前面加上访问级别修饰符 类中默认为私有成员变量或者私有成员函数 而在结构体中如果