C++系列-继承方式
继承方式
- 继承的语法
- 继承方式:
- 继承方式的特点
- 继承方式的举例
- 继承可以减少重复的代码。
- 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
- 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。
继承的语法
class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , .....
{派生类的成员
};
继承方式:
- public
- protected
- private
继承方式的特点
- 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
- public继承中,父类中public和protected权限到子类中不变。
- protected继承中,父类中的public和protected权限到子类中变为protected。
- private继承中,父类中的public和protected权限到子类中变为private。

继承方式的举例
- public继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son : public Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555; // 父类中的私有成员到子类中无法访问}};void test01(){Son s1;s1.m_public_a = 3;// s1.m_protected_a = 333; //父类中的protected权限的成员到子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){ test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
- protected继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: protected Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555; // 父类中的私有成员到子类中无法访问}};void test01(){Son s1;//s1.m_public_a = 3; // 父类中的public权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行// s1.m_protected_a = 333; // 父类中的protected权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){ test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
- private继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: private Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555; // 父类中的私有成员到子类中无法访问}};class Grandson: public Son{public:void show_info_1(){//m_public_a = 5; // 在Son类中,因为是以private方式继承,原Father中的public和protected权限的成员都变成了private,所以当Grandson再使用public方式继承时,无法访问。//m_protected_a = 55;//cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;}};void test01(){Son s1;//s1.m_public_a = 3; // 父类中的public权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行//s1.m_protected_a = 333; // 父类中的protected权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行s1.show_info_1();}void main(){ test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
相关文章:
C++系列-继承方式
继承方式 继承的语法继承方式:继承方式的特点继承方式的举例 继承可以减少重复的代码。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。基类父类,派生类子类,派生类是在继承了基类的部分成员基础…...
web前端之选项卡的实现、动态添加类名、动态移除类名、动态添加样式、激活、间距、tabBar
MENU 原生(一)原生(二)vue(一) 原生(一) 效果图 html 代码 <div class"card"><div class"tab_bar"><div class"item" onclick"handleTabBar(this)">tabBar1</div><div class"item" onclick&qu…...
sql 优化,提高查询速度
文章目录 一、前言二、建议2.1 使用索引2.2 避免使用select *2.3. 使用表连接代替子查询2.4. 优化WHERE子句,减少返回结果集的大小2.5 用union all代替union2.6 使用合适的聚合策略2.7 避免在WHERE子句中使用函数2.8 使用EXPLAIN分析查询2.9 小表驱动大表2.10 使用窗…...
springboot后端开发-自定义参数校验器
背景 在使用springboot进行后端开发的时候,经常会遇到数据校验的问题, 有时候可能默认的校验器不足以满足自己的需求, 这个时候就需要开发一个自己的校验器 在 Spring Boot 中自定义参数校验器通常涉及以下几个步骤: 1. 定义注解…...
springboot社区帮扶对象管理系统论文源码调试讲解
第2章 开发环境与技术 社区帮扶对象管理系统的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对社区帮扶对象管理系统用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的&…...
EmguCV学习笔记 VB.Net 6.2 轮廓处理
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...
【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
文章目录 一、游戏运行效果二、代码实现2.1 项目搭建2.2 加载我方坦克2.3 加载敌方坦克2.4 添加爆炸效果2.5 坦克大战之音效处理 三、完整代码 一、游戏运行效果 二、代码实现 坦克大战游戏 2.1 项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可…...
【机器学习】经典CNN架构
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 经典CNN架构1. 引言2. LeNet3. AlexNet4. VGGNet5. GoogLeNet(Inception)6. Res…...
图像数据处理21
五、边缘检测 5.2基于二阶导数的边缘检测 一阶导数(如Sobel、Prewitt算子)能够捕捉到灰度值的快速变化,但有时会因检测到过多的边缘点而导致边缘线过粗。为了更加精确地定位边缘位置,可以利用二阶导数的零交叉点。零交叉点是是函…...
day37动态规划+三.Github链接本地仓库
一.动态规划 474.一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 思路:这道题更像是另一种的0-…...
设备运维故障排查与修复技巧
运维中最常见的40个故障问题及其解决方法: 1. 网络不通问题:无法访问网络资源。 解决方法:检查物理线路、交换机端口、网卡驱动和配置,使用ping、traceroute等工具定位问题。 2. 网络速度慢问题:访问网络资源速度慢。 解决方法:分析带宽使用情况,检查是否存在广播风…...
探索Python的自动化魔法:AutoIt库揭秘
文章目录 探索Python的自动化魔法:AutoIt库揭秘第一部分:背景介绍第二部分:AutoIt是什么?第三部分:如何安装AutoIt库?第四部分:AutoIt的五个简单函数第五部分:场景应用第六部分&…...
【I/O多路复用】
基于I/O多路复用的并发编程 I/O实现I/O多路复用select优缺点 pollepoll优点 I/O I/O复用是基于一个单进程或单线程的一个执行流当中监控多个输入输出流的技术(网络套接字或者文件描述符进行监控)。单进程或单线程,允许多个用户对单进程发起连…...
【python报错已解决】“IndexError: list index out of range”
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 你是否在处理Python列表时遇到了“IndexError: list index out of range”的错误?这个错误可能会让你的程序中…...
oracle和mysql查询某字段在哪个表中
oracle和mysql查询某字段在哪个表中 oracle的 select TABLE_NAME from user_tab_columns where COLUMN_NAME字段名mysql的: select table_schema ,table_name from information_schema.columns where column_name ‘字段名’ 查询结果table_schema为数据库名&a…...
TCP vs UDP:揭秘可靠性与效率之争
概述 今天我们开始主要讲解TCP的相关知识点。在之前讲解分层章节的时候,我们提到过一个重要观点。在网络层及以下几层,更多的是让主机与主机建立连接,也就是说你的电脑需要知道另一台电脑在哪里才能连接上它。然而,在网络中的通信…...
“树”的高度的计算——CSP-J1真题详解
如同树有高度一样,数据结构中的“树”也有高度,只不过这个高度指的是第几“层”。就像武功可以修炼到第几层一样,树也可以长到第几层。 需要指明的是,树的根节点属于第几层是没有严格的定义的,一般被认为是处于第0层或…...
Docker介绍、docker安装以及实现docker的远程管理
1.Docker介绍 1.Docker介绍 Docker 是⼀个开源的应用容器引擎,可以实现虚拟化,完全采用“沙盒”机制,容器之间不会存在任何接口。 Docker 通过 Linux Container(容器)技术将任意类型的应用进行包装,变成一…...
【UE5】基于摄像机距离逐渐剔除角色
效果 步骤 1. 新建一个工程,在内容浏览器中添加第三人称游戏内容包 2. 找到第三人称角色的材质实例“MI_Quinn_01”并打开 找到材质实例的父项材质“M_Mannequin” 打开材质“M_Mannequin” 在材质图表中添加如下节点 此时运行效果如文章开头所示。 参考视频&#…...
LabVIEW优化内存使用
在LabVIEW中,优化内存使用的关键在于理解LabVIEW的内存管理机制并采用一些最佳实践。以下是一些可能帮助减少内存占用的方法: 1. 减少数据副本的生成 避免不必要的数据复制:每当你在程序中传递数组或子数组时,LabVIEW可能会创建副…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
