当前位置: 首页 > news >正文

【C++】继承 ⑨ ( 继承中成员变量同名的处理方案 )

文章目录

  • 一、继承中成员变量同名的处理方案
    • 1、继承中成员变量同名的场景说明
    • 2、使用域作用符区分同名成员变量
  • 二、代码示例 - 继承中成员变量同名的处理方案





一、继承中成员变量同名的处理方案




1、继承中成员变量同名的场景说明


子类 继承 父类 的 成员 ,

如果 子类 中定义了 与 父类成员变量 同名的 变量 ,

子类 仍然 可以 继承 父类的 同名 成员变量 ;


子类的成员变量 与 继承自父类成员变量 的 名称 出现相同的情况 ,

使用 域作用符 :: 对同名的 成员变量 进行区分 ;


2、使用域作用符区分同名成员变量


子类中使用 域作用符 :: 处理同名成员变量的方案 :

  • 继承自父类的成员变量 , 使用 父类名称::成员变量名称 替代 成员变量名称 , 如 :
    • Parent 是父类名称
    • variable 是父类中的变量名称
    • 如果子类中也定义了 variable 变量 , 子类中使用该方式 访问 父类中的 variable 变量 ;
// Parent 是父类名称
// variable 是父类中的变量名称
// 如果子类中也定义了 variable 变量 , 子类中使用该方式 访问 父类中的 variable 变量 ; 
Parent::variable
  • 子类的成员变量名称 , 可以使用 Child::variable 的方式进行访问 , 也就是可以不使用域作用符 variable ;
// 不使用域作用符
variable
// 使用子类域作用符
Child::variable





二、代码示例 - 继承中成员变量同名的处理方案



代码分析 :

在下面的代码中 , 父类中定义了 int a, b; 两个成员变量 ;

class Parent {
public:int a, b;
};

子类中 , 定义了 int b, c; 两个成员变量 ;

class Child : public Parent {
public:int b, c;
};

显然 , 父类 Parent 和 子类 Child 中 , 成员变量 b 发生了冲突 , 父类 和 子类 中各自定义了一个成员变量 b ;


在 Child 子类内部 ,

  • 如果想要访问 父类的 b 成员变量 , 可以使用 Parent::b 进行访问 ;
  • 如果想要访问 子类的 b 成员变量 , 可以使用 Child::b 进行访问 , 也可以不使用域作用符 , 直接访问 b ;

子类 Child 中 , 定义了 print 成员函数 , 在该函数中 , 通过 Parent::b 访问 继承自父类的 b 成员 , 通过 Child::b 访问 子类自己定义的 b 成员 ;

  • 此外 , 还可以直接使用 b 访问 子类自己定义的 b 成员 ;
class Child : public Parent {
public:void print(){cout << "父类 b = " << Parent::b << " , 子类 b = " << Child::b << endl;}
public:int b, c;
};

在 类外部 , 通过 子类对象名.父类名::变量名 的方式 , 访问 继承自父类的 成员变量 ;

	Child child;// 访问 子类对象 child 中 继承自 父类的 b 成员child.Parent::b = 10;

完整代码示例 :

#include "iostream"
using namespace std;class Parent {
public:int a, b;
};class Child : public Parent {
public:void print(){cout << "父类 b = " << Parent::b << " , 子类 b = " << Child::b << endl;}
public:int b, c;
};int main() {Child child;// 访问 子类对象 child 中 继承自 父类的 b 成员child.Parent::b = 10;child.print();// 访问 子类对象 child 自己的 b 成员child.b = 20;child.print();child.Child::b = 30;child.print();// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
}

执行结果 :

  • 使用 child.Parent::b 为 父类的 成员变量 b 赋值后 , 打印结果 , 发现 父类成员 值为 10 , 子类成员值是 随机值 ;
  • 使用 child.b 为 子类成员变量 b 赋值 , 打印结果为 20 , 可以与 父类的成员变量 b 区分开 ;
  • 使用 child.Child::b 可以显式指定 访问 子类成员变量 b , 将其设置为 30 , 此时子类成员变量 b 赋值为 30 ;
父类 b = 10 , 子类 b = -858993460
父类 b = 10 , 子类 b = 20
父类 b = 10 , 子类 b = 30
Press any key to continue . . .

在这里插入图片描述

相关文章:

【C++】继承 ⑨ ( 继承中成员变量同名的处理方案 )

文章目录 一、继承中成员变量同名的处理方案1、继承中成员变量同名的场景说明2、使用域作用符区分同名成员变量 二、代码示例 - 继承中成员变量同名的处理方案 一、继承中成员变量同名的处理方案 1、继承中成员变量同名的场景说明 子类 继承 父类 的 成员 , 如果 子类 中定义了…...

Python报错:‘EagerTensor‘ object has no attribute ‘reshape‘

在使用RPython时&#xff0c;发现python代码部分报错&#xff1a;‘EagerTensor‘ object has no attribute ‘reshape‘ 如何解决&#xff1f; 使用np.array 转换为array&#xff0c;再进行reshape 参考&#xff1a; ‘EagerTensor‘ object has no attribute ‘reshape‘处…...

docker-compose手册

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 前言 一些自己经常用到的docker-compose知识。 一、运行和启动项目 1.1、docker-compose运行…...

【珠峰 WEB 前端架构师课程】学习笔记 100 篇(完结)

该课程是珠峰姜文老师讲的&#xff0c;个人觉得讲的很不错&#xff0c;一路在 b 站学习下来做了 100 篇的学习笔记&#xff0c;收获颇丰。 该课程主要讲了高阶函数、函数柯里化、发布订阅模式、观察者模式、从 0 到 1 实现一个 promise&#xff0c;co 库的实现、eventloop 执行…...

Java线程中sleep()、wait()、yield()、join()方法的使用

1.sleep() sleep(): sleep 方法属于 Thread 类&#xff0c;该行为中线程不会释放锁&#xff0c;只阻塞线程&#xff0c;让出cpu给其他线程&#xff0c;当达到指定的时间后会自动恢复运行状态继续运行。 2.wait() wait(): 该方法属于 Object 类&#xff0c;在这个过程里线程会…...

【机器学习】数据均衡学习笔记

文章目录 序言1. 样本不均衡2. 样本不均衡的影响以及样本均衡的意义3. 什么时候需要进行样本均衡/数据均衡4. 数据不均衡的解决办法 序言 数据集制作过程中需要关注样本均衡问题&#xff0c;学习笔记&#xff0c;简单记录 1. 样本不均衡 分类任务中不同类别样本数差别很大的…...

【软件教程】如何用C++交叉编译出能在Android运行的ELF程序或so动态库

一、配置NDK交叉编译平台 1. 打开Android的官方ndk下载链接https://developer.android.com/ndk/downloads?hlzh-cn&#xff0c;下载windows 64位ndk环境包。 2. 解压后将具有以下文件的路径加入到系统环境变量。 3. 配置好环境变量&#xff0c;如下图所示&#xff0c;Path中存…...

进阶JAVA篇- Map 系列集合的遍历方法与常用API

目录 1.0 Map 集合的说明 1.1 Map 集合的常用方法 1.2 Map 系列集合的特点 2.0 Map 系列集合的遍历方法&#xff08;三种方法&#xff09; 2.1 使用 keySet() 方法遍历 2.2 使用 entrySet() 方法遍历 2.3 使用 forEach() 方法遍历&#xff08;Java 8&#xff09; 1.0 Map 集合的…...

Auth.js:多合一身份验证解决方案 | 开源日报 No.60

nodejs/node Stars: 96.2k License: NOASSERTION Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。它具有以下关键特性和核心优势&#xff1a; 强大&#xff1a;Node.js 提供了强大且高效的服务器端运行能力&#xff0c;可以处理并发请求&#xff0c;并支持异步编程…...

SpringBoot整合Activiti7——任务监听器(七)

文章目录 一、任务监听器事件类型配置方式(选)代码实现xml文件创建监听器class方式expression方式delegateExpression 测试流程部署流程启动流程完成任务 一、任务监听器 任务监听器可以在任务创建、任务分配、任务完成、任务删除发生时触发&#xff0c;从而执行相应的逻辑。 事…...

电解电容寿命与哪些因素有关?

电解电容在各类电源及电子产品中是不可替代的元器件&#xff0c;这些电子产品中由于应用环境的原因&#xff0c;使它成为最脆弱的一环&#xff0c;所以&#xff0c;电解电容的寿命也直接影响了电子产品的使用寿命。 一、电解电容失效模式与因素概述 铝电解电容器正极、负极引出…...

Opencv-图像插值与LUT查找表

图像像素的比较 白色是255&#xff0c;黑色是0 min(InputArray src1,InputArray src2,OutputArray dst) max(InputArray src1,InputArray src2,OutpurArray dstsrc1:第一个图像矩阵&#xff0c;通道数任意src2&#xff1a;第二个图像矩阵&#xff0c;尺寸和通道数以及数据类型…...

我为什么写博客?写博客给我带来了什么?

1、写博客的契机 &#xff08;1&#xff09;刚开始接触CSDN&#xff0c;是大三的时候开始学习嵌入式开发&#xff0c;经常需要到网上百度查资料&#xff0c;由此经常游览CSDN上的博客&#xff1b; &#xff08;2&#xff09;在嵌入式的过程中&#xff0c;需要总结学习过的知识。…...

jdk11的HttpClient

我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 其实早在jdk9的时候这个方案就在孵化中 上面的截图来自openjdk的官网&#xff0c;注&#xff1a;openjdk是个开源项目&#xff0c;不存在侵权现象 这是openjdk的官网&#xff1a;JEP 110: HTTP/2 Client (In…...

Redis的优势

高性能 Redis是一种基于内存的数据存储系统&#xff0c;读写性能非常高&#xff0c;因此适用于对性能要求较高的应用场景。 数据结构丰富 Redis支持多种数据结构&#xff0c;如字符串、列表、集合、散列、有序集合等&#xff0c;可以满足不同的业务需求。还有一些特殊数据结…...

C++ string 类的其他操作

4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…...

structs2 重构成SpringBoot架构

# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构&#xff1a; 1.2 springboot 架构 1.3 演化要点&#xff1a; 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器&#xff0c;适配 4.ActionSupport将由…...

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都…...

【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性&#xff08;可直接在属性中设置&#xff09;2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox&#xff08;列表框&#xff09; 1.WinForm文件结构 .sln文件 &am…...

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…...

SynapseML计算机视觉实战:OpenCV与深度学习模型结合的终极指南

SynapseML计算机视觉实战&#xff1a;OpenCV与深度学习模型结合的终极指南 【免费下载链接】SynapseML Simple and Distributed Machine Learning 项目地址: https://gitcode.com/gh_mirrors/sy/SynapseML SynapseML是一个强大的分布式机器学习框架&#xff0c;它将Open…...

科技信息最前沿——TurboQuant:以极致压缩重新定义人工智能效率

谷歌TurboQuant技术突破&#xff1a;高效压缩AI内存需求谷歌TurboQuant技术通过创新的免训练压缩方法&#xff0c;有效解决了大语言模型面临的内存瓶颈问题。该技术采用两阶段压缩方案&#xff1a;PolarQuant极坐标量化和QJL误差修正&#xff0c;在不损失精度的前提下实现显著优…...

C++ 多线程同步机制详解

C多线程同步机制详解 在现代计算机系统中&#xff0c;多线程编程已成为提升程序性能的重要手段。多线程环境下的资源共享与竞争问题也随之而来&#xff0c;稍有不慎便会导致数据不一致、死锁等问题。C提供了丰富的多线程同步机制&#xff0c;帮助开发者高效管理线程间的协作与…...

新手友好:借助快马平台的免费token轻松迈出AI应用开发第一步

作为一名刚接触AI开发的新手&#xff0c;我最近在InsCode(快马)平台上完成了一个文本摘要生成器的项目&#xff0c;整个过程非常顺畅。这个平台对初学者特别友好&#xff0c;尤其是提供了免费token&#xff0c;让我们可以零成本体验AI开发的乐趣。 理解token的概念 刚开始我对…...

python-langchain框架(3-9-word文档加载 )

二、基于 LangChain 的功能亮点1. 原生 LangChain 组件&#xff0c;开箱即用直接使用 LangChain 社区提供的专业文档加载器&#xff0c;属于框架原生支持能力&#xff0c;无需自己编写解析逻辑&#xff0c;与 LangChain 整个 AI 开发生态无缝衔接。2. 纯文本精准提取&#xff0…...

沉浸式场景英文|小学英语1000词Ⅰ水果篇Ⅰ干词

沉浸式场景英文|小学英语1000词Ⅰ水果篇以下是为小学生整理的高频水果类英语单词&#xff0c;分类清晰&#xff0c;便于记忆&#xff1a;&#xff08;可一键复制导入「干词」直接沉浸场景背单词&#xff01;&#xff09;基础常见水果 apple 苹果 banana 香蕉 orange 橙子 grape…...

告别激光雷达?手把手复现ST-P3:一个纯视觉的端到端自动驾驶模型(附避坑指南)

纯视觉自动驾驶实战&#xff1a;从零复现ST-P3模型的完整指南 当特斯拉在2021年宣布取消所有车型的雷达传感器时&#xff0c;整个行业都在质疑纯视觉方案的可靠性。然而ST-P3论文的发表&#xff0c;为这一技术路线提供了新的理论支撑。本文将带你深入这个前沿模型的实现细节&am…...

微信聊天记录永久保存终极指南:用WeChatMsg轻松掌控你的数字记忆

微信聊天记录永久保存终极指南&#xff1a;用WeChatMsg轻松掌控你的数字记忆 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…...

TranslucentTB:重塑Windows任务栏视觉体验的轻量化方案

TranslucentTB&#xff1a;重塑Windows任务栏视觉体验的轻量化方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否曾遇到这样的困…...

别再折腾本地环境了!用Google Colab免费GPU跑通YOLOv8的保姆级教程

别再折腾本地环境了&#xff01;用Google Colab免费GPU跑通YOLOv8的保姆级教程 第一次接触YOLO目标检测模型时&#xff0c;我被它强大的实时检测能力震撼了——直到尝试在本地配置环境。CUDA版本冲突、PyTorch安装报错、显卡驱动不兼容...这些坑让我的热情迅速降温。直到发现G…...