C++ 类中protected的通俗解释

2023-10-27

举个例子,假如我们要定义人这个类,其中每个人都有三种财富:养老金,子女金,生活金。
首先是生活金,每个人的生活金其实都是可以对外公开的,所以应该可以设置为public,但是遗产和养老金是不对外公布的。
那么问题来了,遗产和养老金是不是都应该设置为private呢?
其实不然,养老金不能由孩纸瞎改,但是遗产这个这个值孩纸应该是有权利改动的,比如孩子有权将遗产设置为0(放弃遗产),
所以在子类中应该是可以触及到这个变量,但是private是子类也无法触及的,所以就整出一个protected属性来实现这个操作。
所以感觉protected完全是为了继承设置的一种属性。当你觉得某个值是其他开发者需要使用的,则可以设置为protected,
但是不推荐用protected,这个值虽然是当下类对象无法访问的,但是如果想访问,自己写个继承就个可以达到这个目的
(在继承类的public中写个函数调用父类的protected并显示出来,则子类对象就可不修改父类定义的情况下输出父类protected的值)。

 在设计基类时,对于某些成员变量基类设计者A也不知道其他人会怎么使用,假如A一开始将成员变量a定义为private,当其他人过来继承时需要一个a++的操作,那么他就不得不去找A让他改基类的定义,不然在继承类中无法直接操作基类的私有成员。过了一会儿又有人需要一个a--操作,那么A又要改基类定义添加一个a--的public成员函数,当然后面还有各种需求。。所以A很无奈,于是就出现了protect,对于继承者而言,你们随便操作不用再来麻烦我。这样即保证了数据的私有性(不能被对象获取),同时基类设计者也不用来回改基类定义来满足各种继承者

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

C++ 类中protected的通俗解释 的相关文章

  • C++全局变量

    规则 全局变量只能在头文件申明 不能在头文件定义 工程全局变量 声明方式是头文件中extern 来声明 原因是如果放在global h中定义的话 就会出现global obj和other obj定义冲突的问题 global h extern
  • C++ 类中protected的通俗解释

    举个例子 假如我们要定义人这个类 其中每个人都有三种财富 养老金 子女金 生活金 首先是生活金 每个人的生活金其实都是可以对外公开的 所以应该可以设置为public 但是遗产和养老金是不对外公布的 那么问题来了 遗产和养老金是不是都应该设置
  • 编程小记—— C/C++中 x & -x 表示含义

    说明 看多了各种优秀看源代码的经常会遇到一些很常见的公式 本篇文章记录的 x x 就是其中的一种 含义 我们都知道 x 的值 其实就是在x的值的基础上进行按位取反 x 之后在增加1所得 也就是说 x x x x 1 x 为偶数 我们都知道
  • 引用 C C++

    引用 引用是一个别名 它的作用就是作为目标的别名而使用 对这个引用的改动 就是对目标的改动 定义 例如引用一个整型变量 int a 666 int ra a 引用运算符 与地址操作符使用相同的符号 虽然它们显然是彼此相关的 但它们又是不一样
  • C++ 内存分区模型

    本阶段注意针对C 面向对象编程计算左详细讲解 探讨C 中的核心和精髓 1 内存分区模型 C 程序在执行时 将内存大方向划分为4个区域 1 代码区 存放函数体的二进制代码 由操作系统进行管理的 2 全局区 存放全局变量和静态变量以及常量 3
  • C++的关键字

    关键字也称保留字 是预先定义好的标识符 有其特殊的含义 auto break case char const continue default do double else enum extern float for goto if int
  • C++异常介绍与自定义异常

    C 异常处理提供了一种在程序运行期间处理运行时错误的方法 通过使用异常处理 您可以更清晰地分隔正常代码和处理错误的代码 C 异常处理涉及到三个关键词 try catch 和 throw throw 当问题出现时 程序会 抛出 一个异常 这是
  • 复杂数据类型 枚举类型

    枚举 如果一个变量只有几种可能的值 可以把它定义成枚举类型 所谓 枚举 顾名思义 就是把这种类型数据可取的值一一列举出来 一个枚举型变量取值仅限于列出值的范围 例如 定义一个枚举类型weekday enum weekday Mon Tue
  • 简单的线性单向链表

    数组的不足 我们之前用的数组也是一种数据结构 数组是顺序存储的 数组逻辑关系上相邻的两个元素在物理位置上也相邻 这就导致了在对数组进行插入或删除操作时 需移动大量数组元素 并且数组的长度是固定的 而且必须预先定义 数组的长度难以缩放 对长度
  • hello world C C++ Python Java Go

    碎碎念念 hello world是程序设计语言必打 入门小白都会在学习之初来这么一手 C include
  • 预处理命令 文件包括

    预处理命令 源程序中以 开头的行称为预处理指令 预处理指令并不是C语言的语法成分 而是传给编译程序的指令 包括 宏定义 define undef 文件包含 include 条件编译 if ifdef else elif endif 其他 l
  • 类的设计与实现 设计一个游戏的某个简单过程

    大作业1 类的设计与实现 一 实验目的 掌握类的设计与实现 了解如何根据描述发现类及其成员 具备初步的面向对象分析与设计能力 二 实验内容 请选择一个你所熟悉的游戏 分析其中的某个场景所涉及的类 及其各个类的属性和行为 完成类的定义 请选择
  • C# 1. 介绍

    1 介绍 C 读作 See Sharp 是一种简洁 现代 面向对象且类型安全的编程语言 C 起源于 C 语言家族 因此 对于 C C 和 Java 程序员 可以很快熟悉这种新的语言 C 已经分别由 ECMA International 和
  • c++基础复习——c++对象模型和this指针

    1 在c 中 成员变量和成员函数分开存储 只有非静态的成员变量才属于类的变量上 成员变量和成员函数是分开存储的 当定义一个空类 求空类的大小 include
  • 用指针交换两个数

    题目描述 利用指针交换用户输入的两个数 输入 测试次数t 共t行 每行两个整数 输出 共t行 每行输出交换后的两个整数 输入样例1 2 1 2 35 21 输出样例1 2 1 21 35 思路分析 用a和b两个变量把数存储下来 再用两个指针
  • C++ Windows API IsDebuggerPresent的作用

    IsDebuggerPresent 是 Windows API 中的一个函数 它用于检测当前运行的程序是否正在被调试 当程序被如 Visual Studio 这样的调试器附加时 此函数会返回 TRUE 否则 它会返回 FALSE 这个函数经
  • C++的类与对象

    类的概念 类是将不同类型的数据和处理这些数据的操作封装在一起的一个复合数据类型 类有两类成员 一类是数据成员 用于表示实体抽象的属性 另一类是成员函数 用来描述实体抽象的行为 类作为一种数据类型 在定义的时候是不分配内存的 类通过将数据和对
  • 【C/C++学习笔记】c++ 回调函数

    1 介绍 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 我们就说这是回调函数 回调函数不是由该函数的实现方直接调用 而是在特定的事件或条件发生时由另外的一方
  • 键盘输入流的缓冲效应 I/O流 缓冲I/O

    引子 有时候 你会发现 你的程序老是读不进某个值 但是反反复复看代码 又感觉自己代码真的没有问题 比如说下面这个代码 include stdio h int main int num char ch scanf d num scanf c
  • 拷贝构造函数 浅拷贝与深拷贝

    目录 拷贝构造函数 浅拷贝 深拷贝 拷贝构造函数 上一期中我们讲述了构造函数的相关内容 谈到构造函数在形式上有几种分类 即带参数的 不带参数的以及参数列表初始化的 还有一种传引用的构造函数 称为拷贝构造函数 顾名思义 就是起到拷贝的功能 通

随机推荐

  • 【2022年MathorCup大数据竞赛】B题:北京移动用户体验影响因素研究(一)

    目录 一 题目背景 二 初赛问题 三 数据集的分享 一 题目背景 移动通信技术飞速发展 给人们带来了极大便利 人们也越来越离不开移动通信技术带来的各种便捷 随着网络不断的建设 网络覆盖越来越完善 各个移动运营商 越来越重视客户的网络使用体验
  • 判断文件的几种方法及其优劣对比

    目录 一 懒人的try语句 二 传统的os模块 三 时尚的pathlib模块 四 几种方法优劣对比 我们知道当 件不存在的时候 open 法的写模式与追加模式都会新建 件 但是对 件进 判 我们之前学过 要 with语句来处理 件读写 但w
  • shell脚本生成两个数据日期之间的所有日期

    在linux下有时候会需要得到两个日期之间的所有日期 作为变量进行处理 例如两个日期之间的所有日期都分别生成一个用日期命名的文件夹 以下shell脚本循环输出两个指定日期之间的所有日期 包括两个输入日期 bin bash 以YYYYMMDD
  • 排列数【第十届】【决赛】【B组】

    在一个排列中 一个折点是指排列中的一个元素 它同时小于两边的元素 或者同时大于两边的元素 对于一个 1 n 的排列 如果可以将这个排列中包含 t个折点 则它称为一个 t 1 单调序列 例如 排列 1 4 2 3 是一个 3 单调序列 其中
  • GTK+的优点与QT的优点

    想看看图形界面系统的优缺点 转载了网友整理的 GTK 的优点与QT的优点整理 在嵌入式 Linux 下有很多图形界面系统 GUI 包括 Qt Embedded FLTK Microwindows 和 GTK 等 作为一个开发者 到底使用什么
  • YOLOv8+ByteTrack多目标跟踪(行人车辆计数与越界识别)

    课程链接 https edu csdn net course detail 38901 ByteTrack是发表于2022年的ECCV国际会议的先进的多目标跟踪算法 YOLOv8代码中已集成了ByteTrack 本课程使用YOLOv8和By
  • arcgis已试图对空几何执行该操作_ArcGIS中坐标转换和投影变换

    当不同来源 不同坐标系统的空间数据要在一起使用 相互参照时 就要进行坐标转换 如果涉及不同的地图投影 就要进行投影变换 动态投影 所谓动态投影 是指改变ArcMap中的数据框架 DataFrame 的空间参考或者对后加入ArcMap中的数据
  • liunx常用命令

    在liunx中可能有几百个命令 最常用的就10多个 liunx中最常用的命令 ls 功能 使用说明 案例 pwd 功能 使用说明 案例 cd 功能 使用说明 案例 mkdir 功能 使用说明 案例 touch 功能 使用说明 案例 rm 功
  • 动力节点 SpringBoot教程 p15 Whitelabel Error Page

    一步一步跟着王妈妈敲的 还是报错 后来发现是目录的问题 initiizer初始化出来application和comtroller不在一个包下面 把他挪到controller包下面就ok了 或者把他挪到和controller目录一个层次也可以
  • Android--沉浸式导航栏适配

    转自 Android 沉浸式导航栏适配 Aruba233的博客 CSDN博客 本文是用于设配SDK4 4到5 0的沉浸式导航栏适配 4 4下面的实现不了沉浸式 上次说到适配沉浸式状态栏时 为DecorView添加一个View可以是实现 导航
  • 包装类的使用

    包装类的使用 1 相关概念 java提供了8种基本数据类型对应的包装类 使得基本数据类型的变量具有类的特征 需要掌握 基本数据类型 包装类 String三者之间的相互转换 2 基本数据类型和包装类的互转 基本数据类型转换包装类 调用包装类的
  • EMI 滤 波 器 原 理 与 设 计 方 法 详 解

    输入端差模电感的选择 差模 choke 置于 L 线或 N 线上 同时与 XCAP 共同作用 F 1 2 L C 波器振荡频率要低于电源供给器的工作频率 一般要低于 10kHz L N2AL nH N2 nH N L nH AL nH N2
  • qt 动画(界面跳转进场动画)

    目标 做上位机软软件的时候 觉得QTabWidget的每个tab跳转时候 单纯的界面显示太过单调 希望有界面上面的控件有一个进场的动画效果 效果 实现 通过动画QPropertyAnimation把设置单个控件动画效果 在用组合动画类QSe
  • [编程入门]二维数组的转置

    题目描述 写一个函数 使给定的一个二维数组 转置 即行列互换 输入 一个3x3的矩阵 输出 无 样例输入复制 1 2 3 4 5 6 7 8 9 样例输出复制 1 4 7 2 5 8 3 6 9 思路 二维数组转置 即为i变为j j变为i
  • rabbitmq 常用配置

    rabbitmq 常用配置 rabbitmq 指定RabbitMQ host 默认为 localhost spring rabbitmq host rabbitmq piecloud infra xx 端口号 默认端口号5672 sprin
  • 云计算与Kubernetes(k8s)

    参考链接 https blog csdn net zkkzpp258 article details 86541362 https blog csdn net Bubbler 726 article details 85596418 htt
  • SpringBoot+Mybatis-plus实现多数据源动态切换的两种方式

    一 自定义注解方式 本文中使用的数据源为HikariCP 实现数据源之间的切换用 DataSource自定义注解 配置AOP进行切换 需要引用的包此处不再说明 yml中mysql相关配置如下 datasource 动态数据源配置 dynam
  • 使用计算机录制声音10,Win10怎么录制电脑内部声音 Windows10电脑自身录音教程

    有很多Win10系统用户常常会碰到需要录制电脑内部声音的情况 但是一般这种问题 需要进行设置 相信小伙伴们应该都不是非常了解 那么今天小编就通过这篇文章给大家介绍一下应该如何快速有效的进行内部录音 我们一起往下看教程讲解吧 1 第一步 在W
  • 【python】使用pyqtgraph+pyserial提高绘图效率的方法

    基于pyqtgraph的高速采样和绘图 背景 解决方案 背景 使用场景为从串口读取传感器数据 并实时绘图 如下图所示 采样率为600Hz 采用子进程的方式分别进行读取数据和绘图 进程之间使用python自带的队列queue Queue进行数
  • C++ 类中protected的通俗解释

    举个例子 假如我们要定义人这个类 其中每个人都有三种财富 养老金 子女金 生活金 首先是生活金 每个人的生活金其实都是可以对外公开的 所以应该可以设置为public 但是遗产和养老金是不对外公布的 那么问题来了 遗产和养老金是不是都应该设置