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可能会创建副…...
ZYNQ纯PL端设计:从Bit到Boot.bin的固化实战解析
1. ZYNQ纯PL端固化的核心挑战 第一次接触ZYNQ的开发者经常会遇到一个困惑:为什么Vivado生成的bit文件不能像传统FPGA那样直接烧录?这其实涉及到ZYNQ芯片的架构特点。ZYNQ本质上是ARM处理器(PS)和FPGA(PL)的…...
Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接于
一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...
别再死记M法T法公式了!用Arduino和常见编码器手把手教你电机测速(附代码)
用Arduino实战编码器测速:告别公式背诵,从接线到可视化分析 当你第一次拿到那个小巧的增量式编码器时,可能会被那些专业术语吓到——M法、T法、分辨率、倍频...但我要告诉你一个秘密:这些概念远没有看起来那么可怕。本文将带你用最…...
精通Venera漫画源:从零构建个性化漫画生态系统的完整指南
精通Venera漫画源:从零构建个性化漫画生态系统的完整指南 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 你是否曾想过将分散在不同平台的漫画资源整合到一个统一的阅读环境中?Venera作为一款开源漫画…...
Rsync异地备份实战:威联通NAS随身带,飞牛NAS稳当家
1. 双NAS异地备份方案设计思路 第一次听说Rsync这个工具是在三年前,当时我正在为工作室的素材管理发愁。我们团队经常需要外出拍摄,每次回来都要手动拷贝素材到主服务器,不仅效率低下还容易出错。直到一位同行推荐了Rsync,我才发现…...
系统高速下载工具
链接:https://pan.quark.cn/s/ae5af7fb722e系统高速下载工具是一款专为 Windows 系统设计的纯净镜像高速下载工具,单文件绿色运行、无冗余写入,可直连微软官方服务器获取 Win10/Win11 全版本原版系统。一款简单、易用的系统映像高速下载工具 …...
Nunchaku FLUX.1-dev 操作系统兼容性指南:Windows系统部署要点
Nunchaku FLUX.1-dev 操作系统兼容性指南:Windows系统部署要点 如果你是一名Windows开发者,想在自己的电脑上跑起来Nunchaku FLUX.1-dev,那你来对地方了。我知道,很多AI模型和工具的教程,默认都是给Linux或者macOS用户…...
利用LFM2.5-1.2B-Thinking-GGUF构建智能知识库问答:基于本地文档的精准回答
利用LFM2.5-1.2B-Thinking-GGUF构建智能知识库问答:基于本地文档的精准回答 1. 企业知识管理的痛点与解决方案 在日常工作中,企业员工经常需要查阅大量内部文档——产品手册、技术规范、公司制度等。传统的关键词搜索往往效率低下,要么返回…...
数学建模小白避坑指南:线性规划建模时,90%的人都会忽略的3个隐藏约束
数学建模小白避坑指南:线性规划建模时,90%的人都会忽略的3个隐藏约束 第一次参加数学建模竞赛的同学,往往会在线性规划问题上栽跟头——明明按照教材上的"三要素"一步步操作,最后求解结果却和实际场景对不上号。去年校…...
Kook Zimage真实幻想Turbo快速部署教程:24G显存跑满1024×1024高清输出
Kook Zimage真实幻想Turbo快速部署教程:24G显存跑满10241024高清输出 想用个人电脑的显卡,快速生成那种充满梦幻感、光影细腻的幻想风格人像吗?今天要介绍的这个项目,或许能让你眼前一亮。 Kook Zimage真实幻想Turbo,…...
