c++中public和private继承怎么影响了变量的使用,今天一篇文章给你讲清楚

文章目录

  • 准则一:继承关系不会改变子类访问基类的变量权限
    • 举个例子
  • 准则二:继承关系只会改变基类中的变量继承到子类中后,权限的改变
    • 举个例子
  • 准则三:基类中的protected变量在外部是不可访问的,类似private。但可以在继承类中访问,且只能通过继承类对象
    • public继承举例
    • private继承举例

准则一:继承关系不会改变子类访问基类的变量权限

比如在基类里的protected变量,在类外是无法访问的,所以尽管是public继承,在继承类中,也不能通过基类对象访问protected变量。

举个例子

#include<iostream>
using namespace std;class Hablee
{
private:int yuki_name;public:std::string getYukiName() {return "wang_wy";}protected:int happyHour;
};class DriveHablee_1 : public Hablee
{
public:void test2(Hablee& h) {std::cout << h.happyHour << std::endl; // 报错}
};

在这里插入图片描述
在这里插入图片描述

准则二:继承关系只会改变基类中的变量继承到子类中后,权限的改变

比如基类中的public变量,在经过private继承后,它在继承类中就是private变量。也就是说,外部可以通过基类对象访问该变量,却无法在外部通过继承类对象访问该变量。

举个例子

#include<iostream>
using namespace std;class Hablee
{
private:int yuki_name;public:std::string getYukiName() {return "wang_wy";}protected:int happyHour;};class DriveHablee_1 : private Hablee
{};int main()
{Hablee hl;DriveHablee_1 dh;std::cout << hl.getYukiName() << std::endl;std::cout << dh.getYukiName() << std::endl; // 报错return 0;
}

在这里插入图片描述

准则三:基类中的protected变量在外部是不可访问的,类似private。但可以在继承类中访问,且只能通过继承类对象

如果是public继承,那么这个变量在继承类中,仍然是protected;如果是private继承,那么这个变量就变成private了,也就是不能在继承类的下一级继承类中使用了。
举个例子

public继承举例

#include<iostream>
using namespace std;class Hablee
{
private:int yuki_name;public:std::string getYukiName() {return "wang_wy";}protected:int happyHour;};class DriveHablee_1 : public Hablee
{
public:void test(Hablee& hl){std::cout << hl.happyHour << std::endl; // 基类对象,报错,不能访问}void test2(DriveHablee_1& dl){std::cout << dl.happyHour << std::endl; // 其他继承类对象, 可以访问, 此时该变量在本类中为protectedstd::cout << this->happyHour << std::endl; // 本继承类对象, 可以访问, 此时该变量在本类中为protected}
};int main()
{Hablee hl;DriveHablee_1 dh, dh2;dh.test2(dh2);hl.happyHour;// 报错dh.happyHour;// 报错return 0;
}

此时在下一级继承类中仍然可以使用

class DriveHablee_2 : public DriveHablee_1
{
public:void test(){this->happyHour; // ok}
};

private继承举例

此时基类的protected变量在继承类中就变成了private,在下一级继承类中无法使用

class DriveHablee_1 : private Hablee
{
public:void test(Hablee& hl){std::cout << hl.happyHour << std::endl; // 基类对象,报错,不能访问}void test2(DriveHablee_1& dl){std::cout << dl.happyHour << std::endl; // 其他继承类对象, 可以访问, 此时该变量在本类中为protectedstd::cout << this->happyHour << std::endl; // 本继承类对象, 可以访问, 此时该变量在本类中为protected}
};class DriveHablee_2 : public DriveHablee_1
{
public:void test(){std::cout<< this->happyHour; // error}
};

同时根据准则一,尽管是private继承,并不会改变继承类对象访问基类中的protected变量,void test2(DriveHablee_1& dl)的实现仍然是对的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2905805.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【WebJs 爬虫】逆向进阶技术必知必会

前言 在数字化时代&#xff0c;网络爬虫已成为一种强大的数据获取工具&#xff0c;广泛应用于市场分析、竞争对手研究、舆情监测等众多领域。爬虫技术能够帮助我们快速、准确地获取网络上的海量信息&#xff0c;为决策提供有力支持。然而&#xff0c;随着网络环境的日益复杂和…

【热门话题】Yarn:新一代JavaScript包管理器的安装与使用

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Yarn&#xff1a;新一代JavaScript包管理器的安装与使用引言一、Yarn的安装1. 系…

sonar+gitlab提交阻断 增量扫描

通过本文&#xff0c;您将可以学习到 sonarqube、git\gitlab、shell、sonar-scanner、sonarlint 一、前言 sonarqube 是一款开源的静态代码扫描工具。 实际生产应用中&#xff0c;sonarqube 如何落地&#xff0c;需要考虑以下四个维度&#xff1a; 1、规则的来源 现在规则的…

【学习笔记】java项目—苍穹外卖day01

文章目录 苍穹外卖-day01课程内容1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 产品原型2.3 技术选型 3. 开发环境搭建3.1 前端环境搭建3.2 后端环境搭建3.2.1 熟悉项目结构3.2.2 Git版本控制3.2.3 数据库环境搭建3.2.4 前…

git配置SSH 密钥

git配置SSH 密钥 1.window配置ssh1.安装ssh2.安装 Git&#xff08;安装教程参见安装Git&#xff09;并保证版本大于 1.9![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e59f4e16b83c45649f1d9d7bd6bf92c0.png)3.SSH 尽量保持最新&#xff0c;6.5之前的版本由于使用…

SpringBoot国际化配置流程(超详细)

前言 最新第一次在做SpringBoot的国际化&#xff0c;网上搜了很多相关的资料&#xff0c;都是一些简单的使用例子&#xff0c;达不到在实际项目中使用的要求&#xff0c;因此本次将结合查询的资料以及自己的实践整理出SpringBoot配置国际化的流程。 SpringBoot国际化 "i…

猫,路由器,WIFI

家庭网络常识 1&#xff1a;猫、路由器、wifi_哔哩哔哩_bilibili 入户光纤插到猫上面&#xff0c;网线连接猫和路由器&#xff0c;网线连接路由器和电脑。路由器可以发射WIFI。 手机通过WIFI连接到路由器。 左边是猫&#xff0c;右边是光猫。 &#xff08;modem&#xff09; …

JAVA面试八股文之集合

JAVA集合相关 集合&#xff1f;说一说Java提供的常见集合&#xff1f;hashmap的key可以为null嘛&#xff1f;hashMap线程是否安全, 如果不安全, 如何解决&#xff1f;HashSet和TreeSet&#xff1f;ArrayList底层是如何实现的&#xff1f;ArrayList listnew ArrayList(10)中的li…

《QT实用小工具·一》电池电量组件

1、概述 项目源码放在文章末尾 本项目实现了一个电池电量控件&#xff0c;包含如下功能&#xff1a; 可设置电池电量&#xff0c;动态切换电池电量变化。可设置电池电量警戒值。可设置电池电量正常颜色和报警颜色。可设置边框渐变颜色。可设置电量变化时每次移动的步长。可设置…

淘宝订单中的涉及红包检测、优惠券检测方案|工具|API

首先&#xff0c;检测订单红包的核心价值是什么&#xff1f; “红包的本质就是薅平台羊毛&#xff1a;不用怀疑&#xff0c;平台对于这种损害平台利益的行为肯定是最高等级的稽查”。那么&#xff0c;在日常运营中&#xff0c;需要尽可能过滤这类订单。 其次&#xff0c;如何使…

堆的应用(堆排序,TOP-K问题)详细讲解

所有人都关心我飞的高不高&#xff0c;只有我妈关心我翅膀硬不硬 一、堆的应用 1. 堆排序 1.1 建堆 1.2 利用堆删除思想来进行排序 2.TOP-K问题 二、完结撒❀ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–…

斜率优化dp 笔记

任务安排1 有 N 个任务排成一个序列在一台机器上等待执行&#xff0c;它们的顺序不得改变。 机器会把这 N 个任务分成若干批&#xff0c;每一批包含连续的若干个任务。 从时刻 00 开始&#xff0c;任务被分批加工&#xff0c;执行第 i 个任务所需的时间是 Ti。 另外&#x…

【LVGL-字库应用】

LVGL-中文字库应用 ■ LVGL-内部字库■ LVGL 内部字库的使用流程&#xff1a; ■ LVGL-自定义字库■ 方法一&#xff1a;C 语言数组&#xff08;内部读取&#xff09;-在线转换工具■ 方法二&#xff1a;C 语言数组&#xff08;内部读取&#xff09;-利用离线字体转换软件&…

销售的业绩和合同无法统一管理可以通过系统实现吗?

这个问题我们在日常管理中也遇到过&#xff0c;在没有使用软件之前&#xff0c;合同原件没有专人负责打理&#xff0c;销售人员签了合同后&#xff0c;直接把原件随手放在柜子里&#xff0c;或者把数据记录到excel表中。 但是每个人的工作习惯不一样&#xff0c;记录的表格也不…

Spring boot 发送文本邮件 和 html模板邮件

Spring boot 发送文本邮件 和 html模板邮件 提示&#xff1a;这里使用 spring-boot-starter-mail 发送文本邮件 和 html模板邮件 文章目录 Spring boot 发送文本邮件 和 html模板邮件一、开启QQ邮箱里的POP3/SMTP服务①&#xff1a;开启步骤 二、简单配置①&#xff1a;引入依赖…

Linux系统使用Docker部署MinIO结合内网穿透实现公网访问本地存储服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

①胃癌单细胞和配对转录组揭示胃肿瘤微环境(文献和数据)

目录 文献内容 胃癌细胞微环境格局 肿瘤基质的特征存在活化的成纤维细胞 肿瘤内皮细胞与血管生成途径 巨噬细胞显示炎症二分法 淋巴细胞转向免疫抑制和分化表型 细胞通信网络揭示了胃癌发展的潜在驱动因素 胃癌免疫治疗批量RNA-seq的整合揭示了细胞和分子的反应倾向 数…

Web漏洞-深入WAF注入绕过

目录 简要其他测试绕过 方式一:白名单&#xff08;实战中意义不大&#xff09; 方式二:静态资源 方式三: url白名单 方式四:爬虫白名单 #阿里云盾防SQL注入简要分析 #安全狗云盾SQL注入插件脚本编写 在攻防实战中&#xff0c;往往需要掌握一些特性&#xff0c;比如服务…

Zabbix6 - Centos7源码编译部署HA高可用集群手册

Zabbix6 - Centos7源码编译部署HA高可用集群手册 HA高可用集群 总所周知,在我们IT运维的圈圈中,HA高可用集群服务算是逼格最高的吧也是运维里保障力度最大的环境。 HA是HighlyAvailable缩写,是双机集群系统简称,提高可用性集群,是保证业务连续性的有效解决方案,一般有两个…

6款好用的AI写作助手,为大家解决创作困难

写作出高质量的文章对于每个创作者来说是非常重要&#xff0c;但有时候在面对繁重的写作任务时&#xff0c;大家可能会陷入创作困境&#xff0c;思绪纷乱、灵感枯竭。&#xff0c;但随着人工智能技术的不断发展&#xff0c;AI写作助手已经成为了许多创作者的得力帮手&#xff0…