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

C++面向对象 继承

格式

class 子类:继承方式 父类
{};//子类  又称为派生类
//父类  又称为基类

三种继承方式 

继承中的同名成员处理

 继承中的同名静态成员处理

包含子对象的派生类构造函数

作用:

包含子对象的派生类构造函数用于在创建派生类对象时,不仅初始化派生类自身的数据成员,还能正确地初始化其基类子对象和子对象(即成员对象)

构造和析构顺序

  • 构造顺序:基类构造函数 -> 子对象构造函数 -> 派生类构造函数。
  1. 基类构造函数:由于派生类继承自基类,所以基类的构造函数会首先被调用,目的是初始化从基类继承来的成员变量。
  2. 子对象构造函数:在基类构造函数执行完毕后,派生类中包含的子对象的构造函数会依次被调用,以完成子对象的初始化。
  3. 派生类构造函数:最后,派生类自身的构造函数才会执行,对派生类特有的成员变量进行初始化。
  • 析构顺序:派生类析构函数 -> 子对象析构函数 -> 基类析构函数。

模板:

#include <iostream>
class Base 
{
public:Base() { std::cout << "基类调用" << std::endl; }
};class Member 
{
public:Member() { std::cout << "子对象调用" << std::endl; }
};class Derived : public Base 
{
public:Member member;Derived() { std::cout << "派生类调用" << std::endl; }
};int main() 
{Derived d;return 0;
}
//运行结果基类调用
子对象调用
派生类调用

例题1

#include <iostream>
#include <string>
using namespace std;
// 生日类
class BirthDate
{
public:int year;int month;int day;// 构造函数BirthDate(int y, int m, int d) : year(y), month(m), day(d) {}// 修改生日的函数void modifyBirthday(int y, int m, int d){year = y;month = m;day = d;}// 输出生日信息的函数void displayBirthday(){cout << "year:" << year << endl;cout << "month:" << month << endl;cout << "day:" << day << endl;}
};
// 教师类
class Teacher
{
public:int num;string name;char sex;BirthDate birth;//定义子对象// 构造函数Teacher(int n, string na, char se, int y, int m, int d) : num(n), name(na), sex(se), birth(y, m, d) {}
// 输出教师个人信息的函数void displayInfo(){cout << "num:" << num << endl;cout << "name:" << name << endl;cout << "sex:" << sex << endl;birth.displayBirthday();}// 修改教师生日的函数void modifyTeacherBirthday(int y, int m, int d){birth.modifyBirthday(y, m, d);}
};
int main()
{// 定义 Teacher 类对象 tea1 并给出所有数据的初值Teacher tea1(101, "张三", 'm', 1973, 4, 17);// 输出教师的初始信息tea1.displayInfo();// 修改 tea1 的生日数据tea1.modifyTeacherBirthday(1586, 5, 25);// 输出教师修改后的信息tea1.displayInfo();return 0;
}

例题2 

#include<iostream>
#include<string>
using namespace std;
class Person
{string name;char sex;int age;
public:Person(string na,char se,int ag):name(na),sex(se),age(ag){}void IntroduceMe(){string s=(sex=='M'?"Male":"Female");cout<<"My name is"<<name<<", "<<s<<", "<<age<<"years old."<<endl;}void Eat(){cout<<"I'm hungry! I'd like something to eat! "<<endl;}void Rest(){cout<<"I'm tired. I need to rest."<<endl;}
};
class Student:public Person
{string num;string zhuanye;
public:Student(string na,char se,int ag,string nu,string zy):Person(na,se,ag),num(nu),zhuanye(zy){cout<<"我的学号是"<<num<<"专业是"<<zhuanye<<endl;}void shangke(){cout<<"我正在上课"<<endl;}void kaoshi(){cout<<"我正在考试"<<endl;}
};
int main()
{Person p1("张三",'M',19);p1.IntroduceMe();p1.Eat();p1.Rest();cout<<"---------------------------------------"<<endl;Student s2("李四",'M',18,"201210101","计算机");s2.Eat();s2.Rest();s2.IntroduceMe();s2.shangke();s2.kaoshi();return 0;
}

多继承语法

作用:允许一个类继承多个类

语法:class 子类:继承方式 父类1,继承方式 父类2...

如果在多继承中引发同名成员出现,需要加作用于区分

相关文章:

C++面向对象 继承

格式 class 子类&#xff1a;继承方式 父类 {}&#xff1b;//子类 又称为派生类 //父类 又称为基类 三种继承方式 继承中的同名成员处理 继承中的同名静态成员处理 包含子对象的派生类构造函数 作用&#xff1a; 包含子对象的派生类构造函数用于在创建派生类对象时&…...

Docker容器网络架构深度解析与技术实践指南——基于Linux内核特性的企业级容器网络实现

第1章 容器网络基础架构 1 Linux网络命名空间实现原理 1.1内核级隔离机制深度解析 1.1.1进程隔离的底层实现 通过clone()系统调用创建新进程时&#xff0c;设置CLONE_NEWNET标志位将触发内核执行以下操作&#xff1a; 内核源码示例&#xff08;linux-6.8.0/kernel/fork.c&a…...

【上位机——MFC】对象和控件绑定

对象和控件绑定 将控件窗口和类对象绑定具有两大作用 如果和数据类对象绑定&#xff0c;对象和控件可以进行数据交换。 如果和控件类对象绑定&#xff0c;对象就可以代表整个控件。 与数据类型对象绑定的使用 数据类型对象和控件可实现数据交互重写父类成员虚函数DoDataExch…...

Ubuntu20.04安装使用ROS-PlotJuggler

Ubuntu20.04安装使用ROS-PlotJuggler 安装PlotJuggler使用Plotjuggler 写在前面&#xff0c;先确保安装了ROS-Noetic&#xff0c;如果没有安装&#xff0c;可通过以下程序一键安装&#xff1a; wget http://fishros.com/install -O fishros && . fishros安装PlotJuggl…...

Go语言八股之并发详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

紫光同创FPGA实现HSSTHP光口视频传输+图像缩放,基于Aurora 8b/10b编解码架构,提供3套PDS工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的 GT 高速接口解决方案Xilinx系列FPGA实现GTP光口视频传输方案推荐Xilinx系列FPGA实现GTX光口视频传输方案推荐Xilinx系列FPGA实…...

怎样避免住宅IP被平台识别

要有效避免住宅IP被平台识别&#xff0c;需从IP质量选择、环境参数伪装、行为模式模拟、技术细节处理等多维度构建防御体系。以下是基于行业实践的综合性解决方案&#xff1a; 一、确保住宅IP的高纯净度 选择真实家庭网络IP 验证IP是否归属真实家庭宽带&#xff08;非机房IP伪装…...

(1-1)Java的JDK、JRE、JVM三者间的关系

目录 1.JVM (Java 虚拟机) 2. JRE (Java运行时环境) 3. JDK(Java开发工具包) 1.JVM (Java 虚拟机) JVM可看作程序的自行引擎&#xff0c;将字节码转化为特定平台上的机器代码执行 功能&#xff1a; 加载并执行字节码文件&#xff1a;JVM从 .class文件中加载字节码&#xf…...

机器学习之嵌入(Embeddings):从理论到实践

机器学习之嵌入(Embeddings)&#xff1a;从理论到实践 摘要 本文深入探讨了机器学习中嵌入(Embeddings)的概念和应用。通过具体的实例和可视化展示&#xff0c;我们将了解嵌入如何将高维数据转换为低维表示&#xff0c;以及这种转换在推荐系统、自然语言处理等领域的实际应用…...

【漫话机器学习系列】245.权重衰减(Weight Decay)

权重衰减&#xff08;Weight Decay&#xff09;详解 | L2正则化的奥秘 在深度学习和机器学习模型训练中&#xff0c;我们常常面临 过拟合&#xff08;Overfitting&#xff09; 的问题。 为了提高模型在未见数据上的泛化能力&#xff0c;正则化&#xff08;Regularization&…...

DSENT (Design Space Exploration of Networks Tool) 配合gem5

概述 DSENT是一种建模工具,旨在快速探索电子和新兴的片上光电网络(NoC)的设计空间。它为各种网络组件提供分析和参数化模型,并可在一系列技术假设下移植。给定架构级参数,DSENT从电气和光学构建块分层构建指定的模型,并输出详细的功率和面积估计。 版本 当前:0.91(2…...

汽车加气站操作工考试知识点总结

汽车加气站操作工考试知识点总结 加气站基本知识 了解加气站类型&#xff08;CNG、LNG、LPG等&#xff09;及其特点。 熟悉加气站的主要设备&#xff0c;如储气瓶组、压缩机、加气机、卸气柱、安全阀等。 掌握加气站工艺流程&#xff0c;包括卸气、储气、加压、加气等环节。…...

云蝠智能大模型语音交互智能体赋能电视台民意调研回访:重构媒体数据采集新范式

一、行业痛点与技术挑战 在媒体融合加速推进的背景下&#xff0c;电视台传统民意调研回访面临三大核心挑战&#xff1a; 人工成本高企&#xff1a;某省级卫视调研部门数据显示&#xff0c;人工外呼日均触达量仅 300-500 人次&#xff0c;人力成本占比超过 60%。数据质量参差&…...

数据可视化与数据编辑器:直观呈现数据价值

在当今数字化时代&#xff0c;数据可视化已成为企业洞察数据价值的关键手段。它与数据编辑器紧密结合&#xff0c;不仅能将复杂的数据转化为直观的图形、图表&#xff0c;以一种更加易懂的方式展现数据的规律、趋势和关系&#xff0c;还能借助数据编辑器随时对原始数据进行调整…...

ESP32蓝牙开发笔记(十四)

在 ESP32 的 BLE 开发中&#xff0c;esp_ble_gatts_add_char 是用于向 GATT 服务中添加特征&#xff08;Characteristic&#xff09;的核心函数。以下是该函数的详细说明、参数解析及示例代码&#xff1a; 函数原型 esp_err_t esp_ble_gatts_add_char(uint16_t service_handle…...

idea连接mongodb配置schemas

1. idea连接mongodb配置显示的schemas 默认展示 Default databse, 可以在此设置...

MySQL的函数

函数其实就是方法&#xff0c;就是别人封装好的东西 熟能生巧&#xff0c;加油&#xff01;&#xff01;&#xff01;完整代码在最后。 一、聚合函数 - group_concat() 就是对数据进行分组然后合并 二、数学函数 函数很多&#xff0c;大家至少看一遍&#xff0c;有一个大概印…...

苍穹外卖(订单状态定时处理、来单提醒和客户催单)

订单状态定时处理、来单提醒和客户催单 Spring Task cron表达式 入门案例 ①导入maven坐标 spring-context&#xff08;已存在&#xff09; ②启动类添加注解 EnableScheduling 开启任务调度 ③自定义定时任务类 订单状态定时处理 需求分析 代码开发 自定义定…...

SpringBoot应急物资供应管理系统开发设计

概述 基于SpringBoot的应急物资供应管理系统功能完善&#xff0c;采用了现代化的开发框架&#xff0c;非常适合学习或直接应用于实际项目。 主要内容 5.1 管理员功能模块 管理员可通过登录界面进入系统&#xff0c;使用用户名、密码和角色信息进行身份验证。登录后&#xf…...

spring cloud gateway 断言(Predicates)与过滤器(filters)

断言 在 Spring Cloud Gateway 中&#xff0c;内置的断言&#xff08;Predicates&#xff09;用于对请求进行条件匹配。Spring Cloud Gateway 提供了多种内置断言&#xff0c;可以根据请求的路径、头部、方法等条件来决定是否将请求路由到特定的处理器。 内置断言 基于路径 …...

MySQL-数据查询(多表连接JOIN)-04-(11-2)

学生表 学号 姓名 班级 课程编号 课程名称 是否结课 create table xs( xs_id int auto_increment primary key, xs_xm varchar(30), xs_bj varchar(30), xs_kcbh varchar(30), xs_kcmc varchar(30), xs_sfjk varchar(30) );insert xs values(1,张三,24大数据技术,1001,MYS…...

解决leetcode第3537题填充特殊网格

3537.填充特殊网格 难度&#xff1a;中等 问题描述&#xff1a; 给你一个非负整数N&#xff0c;表示一个x的网格。你需要用从0到-1的整数填充网格&#xff0c;使其成为一个特殊网格。一个网格当且仅当满足以下所有条件时&#xff0c;才能称之为特殊网格&#xff1a; 右上角…...

C++_MD5算法

文章目录 概要代码应用 概要 MD5算法在数据加密、一致性哈希、安全性验证等技术中有广泛的应用。 MD5算法的原理可简要的叙述为&#xff1a;MD5码以512位分组来处理输入的信息&#xff0c;且每一分组又被划分为16个32位子分组&#xff0c;经过了一系列的处理后&#xff0c;算法…...

深入理解C++ Lambda表达式:从基础到高级应用

在现代C编程中&#xff0c;Lambda表达式已经成为不可或缺的特性之一。自C11引入以来&#xff0c;Lambda极大地改变了我们编写函数对象和回调的方式&#xff0c;使代码更加简洁、表达力更强。本文将全面探讨C Lambda表达式的各个方面&#xff0c;从基础语法到高级应用场景&#…...

蓝桥杯 20. 倍数问题

倍数问题 原题目链接 题目描述 众所周知&#xff0c;小葱同学擅长计算&#xff0c;尤其擅长判断一个数是否是另一个数的倍数。但当面对多个数时&#xff0c;他就比较苦恼了。 现在小葱给了你 n 个数&#xff0c;希望你从中找出三个数&#xff0c;使得这三个数的 和是 K 的倍…...

2025最新出版 Microsoft Project由入门到精通(二)

目录 项目五部曲 第一步&#xff1a;先设置项目的信息和日历 项目的开始结束日期 项目的日历 默认日历改为全年无休&#xff08;除法定节假日&#xff09; 六天工作制/七天工作制设置方法 七天工作制的设置方法 全年无休工作制的设置方法 大小周交替日历设置方法&…...

从人体姿态到机械臂轨迹:基于深度学习的Kinova远程操控系统架构解析

在工业自动化、医疗辅助、灾难救援与太空探索等前沿领域&#xff0c;Kinova轻型机械臂凭借7自由度关节设计和出色负载能力脱颖而出。它能精准完成物体抓取、复杂装配和精细操作等任务。然而&#xff0c;实现人类操作者对Kinova机械臂的直观高效远程控制一直是技术难题。传统远程…...

【ABAP】定时任务DEBUG方法

事物码SM37 执行后&#xff0c;选中作业名&#xff0c;在输入框输入“JDBG”&#xff0c;进入调试模式&#xff08;提前在需要的调试的程序设置断点&#xff09;...

DDPM(Denoising Diffusion Probabilistic Models,去噪扩散概率模型)

简介 DDPM即去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Models&#xff09;&#xff0c;是一种生成式模型&#xff0c;在图像生成、视频生成等领域有广泛应用。以下是其详细介绍&#xff1a; 原理 DDPM的核心思想是通过在数据上逐步添加噪声来破坏数据…...

C26-冒泡排序法

一 算法步骤 外层循环:控制遍历轮数(共n-1轮,n为数组长度)内层循环:每轮比较相邻的元素,若顺序错误则交换,将当前一轮最大(最小)的元素移至末尾 二 实例 代码 #include <stdio.h> int main() {//数组及相关数据定义int arr[4]{12,4,78,23};int i;int j;int temp;int …...

CentOS 7.9 安装详解:手动分区完全指南

CentOS 7.9 安装详解&#xff1a;手动分区完全指南 为什么需要手动分区&#xff1f;CentOS 7.9 基本分区说明1. /boot/efi 分区2. /boot 分区3. swap 交换分区4. / (根) 分区 可选分区&#xff08;进阶设置&#xff09;5. /home 分区6. /var 分区7. /tmp 分区 分区方案建议标准…...

大模型系列(五)--- GPT3: Language Models are Few-Shot Learners

论文链接&#xff1a; Language Models are Few-Shot Learners 点评&#xff1a; GPT3把参数规模扩大到1750亿&#xff0c;且在少样本场景下性能优异。对于所有任务&#xff0c;GPT-3均未进行任何梯度更新或微调&#xff0c;仅通过纯文本交互形式接收任务描述和少量示例。然而&…...

BK精密电源操作软件 9130BA系列和手侧user manual

BK精密电源操作软件 9130BA系列和手侧user manual...

MATLAB的cvpartition函数用法

1. 函数作用 cvpartition 将数据集划分为训练集和测试集&#xff0c;支持多种交叉验证方法&#xff0c;包括&#xff1a; Hold-Out验证&#xff1a;单次划分&#xff08;如70%训练&#xff0c;30%测试&#xff09;K折交叉验证&#xff1a;数据分为K个子集&#xff0c;依次用其…...

含铜废水回收的好处体现

一、环境保护&#xff1a;减少污染&#xff0c;守护生态安全 降低重金属污染 含铜废水若直接排放&#xff0c;铜离子会通过食物链富集&#xff0c;对水生生物和人体造成毒性影响&#xff08;如肝肾损伤&#xff09;。回收处理可去除废水中90%以上的铜离子&#xff0c;显著降低…...

C++20新特新——02特性的补充

虽然上节我们介绍了不少关于协程的特点&#xff0c;但是大家可能对协程还是不是很了解&#xff0c;没关系&#xff0c;这里我们再对其进行补充&#xff0c;详细讲解一下&#xff1b; 一、协程函数与普通函数的区别 这里我们再回归到问题&#xff1a;普通函数和协程在这方面的…...

【c++】 我的世界

太久没更新小游戏了 给个赞和收藏吧&#xff0c;求求了 要游戏的请私聊我 #include <iostream> #include <vector>// 定义世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定义方块类型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定义世界…...

Redis从入门到实战 - 高级篇(上)

一、分布式缓存 1. 单点Redis的问题 数据丢失问题&#xff1a;Redis是内存存储&#xff0c;服务重启可能会丢失数据 -> 实现Redis数据持久化 并发能力问题&#xff1a;单节点Redis并发能力虽然不错&#xff0c;但也无法满足如618这样的高并发场景 -> 搭建主从集群&…...

常见的卷积神经网络列举

经典的卷积神经网络&#xff08;CNN&#xff09;在深度学习发展史上具有重要地位&#xff0c;以下是一些里程碑式的模型及其核心贡献&#xff1a; 1. LeNet-5&#xff08;1998&#xff09; 提出者&#xff1a;Yann LeCun特点&#xff1a; 首个成功应用于手写数字识别&#xff…...

Linux如何安装AppImage程序

Linux如何安装AppImage程序 文章目录 Linux如何安装AppImage程序 在 Linux 中&#xff0c;.AppImage 是一种便携式的应用程序格式&#xff0c;无需安装即可运行。 1.赋予该文件可执行权限 可以使用下列命令&#xff0c;赋予可执行权限 # 举个例子 chmod x /path/to/MyApp.App…...

人工智能如何进行课堂管理?

人工智能如何协助老师课堂管理&#xff1f; 第一步&#xff1a;在腾讯元宝对话框中输入&#xff1a;如何协助老师进行课堂管理&#xff0c;通过提问&#xff0c;我们了解了老师高效备课可以从哪些方面入手&#xff0c;提高效率。 第二步&#xff1a;编辑问题进行提问&#xf…...

如何理解参照权

在管理学和组织行为学中&#xff0c;“参照权力”&#xff08;Referent Power&#xff09;是一种非常重要的权力来源&#xff0c;它属于非强制性权力的一种&#xff0c;主要基于个人特质和人际关系。以下是对参照权力的详细解释&#xff1a; 一、定义 参照权力是指一个人由于…...

从一次被抄袭经历谈起:iOS App 安全保护实战

如何保护 iOS App 的最后一道防线&#xff1a;那些你可能忽略的混淆技巧 如果你曾认真反编译过别人的 .ipa 文件&#xff0c;很可能会有这种感受&#xff1a;“哇&#xff0c;这代码也太干净了吧。” 类名像 UserManager&#xff0c;方法名是 getUserToken&#xff0c;甚至资源…...

从交互说明文档,到页面流程图设计全过程

依据交互说明文档绘制页面流程图&#xff0c;能够将抽象的交互逻辑转化为可视化、结构化的表达&#xff0c;为开发、测试及团队协作提供清晰指引。接下来&#xff0c;我们以外卖 App 订单确认页为例&#xff0c;详细拆解从交互说明文档到完整页面流程图的设计全过程。 一、交互…...

fedora系统详解详细版本

Fedora 系统详解&#xff1a;从起源到实践的深度解析 一、Fedora 概述&#xff1a;开源社区的技术先锋 Fedora 是由 Fedora 项目社区 开发、Red Hat 公司赞助 的 Linux 发行版&#xff0c;以 自由开源、技术前沿 和 稳定性平衡 著称。它是 Red Hat Enterprise Linux&#xff…...

2025-05-07-FFmpeg视频裁剪(尺寸调整,画面比例不变)

原比例如图 原比例如图裁剪后的比例 代码&#xff1a; 方法一&#xff1a;极速 ffmpeg -i input.mp4 -vf "crop1080:750:0:345" -c:v libx264 -preset ultrafast -c:a copy output.mp4关键参数说明&#xff1a; vf “crop宽:高❌y”&#xff1a;定义裁剪区域。 …...

RISC-V JTAG:开启MCU 芯片调试之旅

在当今电子科技飞速发展的时代&#xff0c; MCU 芯片成为众多企业追求技术突破与创新的关键领域。而芯片的调试过程则是确保其性能与可靠性的重要环节。本文以国科安芯自研 AS32A601为例&#xff0c;旨在详细记录基于 RISC-V 架构的 MCU 芯片JTAG 调试过程及操作&#xff0c;为…...

51单片机快速成长路径

作为在嵌入式领域深耕18年的工程师&#xff0c;分享一条经过工业验证的51单片机快速成长路径&#xff0c;全程干货无注水&#xff1a; 一、突破认知误区&#xff08;新手必看&#xff09; 不要纠结于「汇编还是C」&#xff1a;现代开发90%场景用C&#xff0c;掌握指针和内存管…...

idea左侧项目资源管理器不见了处理

使用idea误触导致&#xff0c;侧边栏和功能栏没了&#xff0c;如何打开&#xff1f; 1.打开文件&#xff08;File&#xff09; 2. 打开设置&#xff08;Settings&#xff09; 3.选择Appearance&Behavior--->Appearance划到最下面&#xff0c;开启显示工具栏和左侧并排布…...

给小白的AI Agent 基本技术点分析与讲解

引言&#xff1a;重塑交互与自动化边界的 AI Agent 在人工智能技术飞速发展的浪潮中&#xff0c;AI Agent&#xff08;智能体&#xff09;概念的兴起标志着自动化和人机交互正迈向一个全新的阶段。传统的软件系统通常被设计来执行精确预设的指令序列&#xff0c;它们强大且高效…...