C++从零开始的打怪升级之路(day41)
这是关于一个普通双非本科大一学生的C++的学习记录贴
在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料
那么开启正题
今天分享的是关于继承的知识点
1.派生类的默认成员函数
首先我们来回顾以下默认成员函数是哪几个
1.构造函数 完成初始化工作
2.析构函数 完成清理工作
3.拷贝构造函数 使用同类对象初始化创建新对象
4.赋值重载函数 把一个对象赋值给另一个对象
5.取地址重载函数 普通对象取地址
6.const取地址重载函数 const对象取地址
那么,对于派生类,我们的默认成员函数是怎样的呢
1.派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员,如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表阶段显示调用
2.派生类的拷贝构造函数必须调用基类拷贝构造函数完成基类的拷贝初始化
3.派生类的operator=必须要调用基类的operator=完成基类的复制
4.派生类的析构函数会在被调用完后自动调用基类的析构函数清理基类成员,因为这样才能保证派生类对象先清理派生类成员,再清理基类成员的顺序
5.派生类对象初始化先调用基类构造,再调派生类构造(符合栈的先进后出)
6.派生类对象析构清理先调用派生路析构,再调基类析构(符合栈的先进后出)
7.因为后续一些场景析构函数需要构成重写,重写的条件之一是函数名相同(这个我们后面会讲 解)。那么编译器会对析构函数名进行特殊处理,处理成destrutor(),所以父类析构函数不加 virtual的情况下,子类析构函数和父类析构函数构成隐藏关系(多态内容)
class Person
{
public:Person(const char* name = "peter"): _name(name){cout << "Person()" << endl;}Person(const Person& p): _name(p._name){cout << "Person(const Person& p)" << endl;}Person& operator=(const Person& p){cout << "Person operator=(const Person& p)" << endl;if (this != &p)_name = p._name;return *this;}~Person(){cout << "~Person()" << endl;}
protected:string _name; // 姓名
};class Student : public Person
{
public:Student(const char* name, int num): Person(name), _num(num){cout << "Student()" << endl;}Student(const Student& s): Person(s), _num(s._num){cout << "Student(const Student& s)" << endl;}Student& operator = (const Student& s){cout << "Student& operator= (const Student& s)" << endl;if (this != &s){Person::operator =(s);_num = s._num;}return *this;}~Student(){cout << "~Student()" << endl;}
protected:int _num; //学号
};void Test()
{Student s1("jack", 18);Student s2(s1);Student s3("rose", 17);s1 = s3;
}
2.继承与友元
友元关系不能继承,也就是说基类友元不能访问派生类私有和保护成员
很简单理解,这里不贴代码了
3.继承与静态成员
基类定义了static静态成员,则整个继承体系里面只有一个这样的成员,无论拍成出多少个子类,都只有一个static成员
class Person
{
public:static int _count;
};int Person::_count = 0;class Student : public Person
{
public:int _id;
};void Test()
{Student s1;Student s2;Student s3;cout << Person::_count << endl;s1._count = 1;cout << Person::_count << endl;s2._count = 2;cout << Person::_count << endl;s3._count = 3;cout << Person::_count << endl;
}
新手写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!
相关文章:
C++从零开始的打怪升级之路(day41)
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于继承的知识点 1.派生类的默认成员函数 首先我…...
uni-app app实现web-view H5图片长按下载
问题和使用场景描述: uniapp app web-view中图片无法长按保存,IOS下是正常的,但是Android下长按无反应 解决方案: 下载mui.min.js,放到项目中的static下(下载见最上面的压缩包) 在static目录下新建script.js mui.…...
全量知识系统问题及SmartChat给出的答复 之5
Q15. 支持前端(知识表征)的自然语言能力 需要一个 元语言注释工具 以及两个库(叙词库和语料库)和主题词表。请 1)设计 两个库和主题词表的结构 ,2)分别设计它们的接口,3)通过调用它们…...
DolphinScheduler——工作流实例的生命周期
目录 一、DolphinScheduler架构原理 1.1 系统架构图 1.2 DolphinScheduler核心概念 1.2 创建工作流 1.2.1 如何触发一个工作流实例 1.2.2 任务调度链路监控 1.2.3 Workflow-DAG解析 DAG解析 Dispatch分发流程 Master和Worker的交互过程 1.3 任务运行状态 该篇文章主…...
阻塞和非阻塞网络io有什么区别,分别有哪些应用场景?
阻塞(Blocking)和非阻塞(Non-blocking)网络I/O是两种不同的I/O模型,它们在处理I/O操作时的行为和特点有所不同。 阻塞式网络I/O(Blocking I/O): 在阻塞式网络I/O中,当应…...
面试数据库篇(mysql)- 12分库分表
拆分策略 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 1,冷热数据分离 2,减少IO过渡争…...
LaTeX中的多行数学公式
目录 参考链接 一、gather以及gather*环境编排公式 1、 gather环境 2、 gather*环境 3、 阻止编号 二、align以及align*环境设定公式对齐方式 1、align环境 2、align*环境 三、split环境实现一个公式多行排版 四、cases环境实现分段函数 参考链接 LaTeX中的多行数学…...
绕过5秒盾Cloudflare和DDoS-GUARD
绕过5秒盾Cloudflare和DDoS-GUARD 5秒盾的特点免费版5秒盾的绕过方法付费版5秒盾的绕过方法 5秒盾的特点 <title>Just a moment...</title>例如: <!DOCTYPE html><html lang"en-US"><head><title>Just a moment...</title&…...
react 原理揭秘
1.目标 A. 能够知道setState()更新数据是异步的 B. 能够知道JSX语法的转化过程 C. 能够说出React组件的更新机制 D. 能够对组件进行性能优化 E. 能够说出虚拟DOM和Diff算法 2.目录 A. setState()的说明 B. JSX语法的转化过程 C. 组件更新机制 D. 组件性能优化 E. 虚拟DOM和D…...
el-table实现转置表格
vue版本:vue2.6.10 elementui版本:2.15.14 实现效果:el-table实现行列互换 代码: <template><div class"app-container"><span>原始数据</span><el-table:data"datas"border>…...
(3)(3.1) FlightDeck FrSky发射器应用程序
文章目录 前言 1 概述 2 Turnkey Packages 3 参数说明 前言 Craft and Theory 的 FlightDeck 可让你轻松查看飞行模式、高度、速度、姿态和关键系统警报,包括故障保护和电池错误,如电池不平衡警告和发射机低电量警报。 1 概述 Craft and Theory 的…...
【Unity】导入IAP插件后依赖冲突问题 com.android.billingclient冲突
【Unity】Attribute meta-data#com.google.android.play.billingclient.version 多版本库冲突_unity billingclient-CSDN博客 打开mainTemplate.gradle 找到dependencies { } 在里面末尾加上如下: configurations.all {exclude group: com.android.billingclien…...
docker 转为docker-compose(composerize 命令)
可以使用Composerize将Docker命令转换为Docker Compose文件。 例如:将docker run命令转换为Docker Compose格式,只需用Composerize运行它,如下所示: composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/…...
【Golang切片】
切片 切片的引入内存分析切片的定义切片的遍历切片注意事项 切片的引入 【1】切片(slice)是golang中一种特有的数据类型 【2】数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在Go语言的代码…...
React-router的创建和第一个组件
需要先学react框架 首先:找到一个文件夹,在文件夹出打开cmd窗口,输入如下图的口令 npx create-react-app demo 然后等待安装 安装完成 接下来进入创建的demo实例 cd demo 然后可以用如下方式打开vscode code . 注意:不要忽略点号与…...
计算机设计大赛 深度学习猫狗分类 - python opencv cnn
文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习猫狗分类 ** 该项目较为新颖&a…...
Linux服务器磁盘及内存用量监控Python脚本(推送钉钉群通知)
文章目录 Python 脚本钉钉推送通知定时任务 Python 脚本 # -*- coding: utf-8 -*- import subprocessdef get_disk_usage():# 执行 df 命令获取磁盘使用情况df_process subprocess.Popen([df, -h, /], stdoutsubprocess.PIPE)output, _ df_process.communicate()output out…...
Android13 Audio框架
一、Android 13音频代码结构 1、framework: android/frameworks/base 1.AudioManager.java :音频管理器,音量调节、音量UI、设置和获取参数等控制流的对外API 2.AudioService.java :音频系统服务(java层),…...
kafka消费者接收不到消息
背景: 对kafka消息进行监听,生产者发了消息,但是消费端没有接到消息,监听代码 消费端,kafka配置 spring.kafka.bootstrap-serverskafka.cestc.dmp:9591 spring.kafka.properties.sasl.jaas.configorg.apache.kafka.…...
Python如何从SQL Server存取数据?
在Python中,你可以使用各种库来连接和操作 SQL Server 数据库。一种常用的库是pyodbc,它是一个用于连接到各种数据库的开源 Python 库,包括 SQL Server。以下是连接到 SQL Server 并存取数据的基本步骤: 1、安装 pyodbc 库&#…...
西门子SMART控制三伺服程序
西门子SMART控制三伺服程序最近在调试西门子SMART系列PLC控制三轴伺服的项目,发现运动控制这块儿藏着不少实用技巧。这次用的CPU是SR60,搭配三个V90伺服做同步搬运,现场调试完感觉可以和大家唠唠具体实现方法。先上段基础配置代码热热身&…...
山东大学项目实训-大数据租房推荐智能体(一)
整体任务搭建完整的agent框架,设计项目结构,agent工作流程,编写prompt和重试机制约束LLM输出,实现多轮对话管理,让agent能够理解当下环境和用户意图,编排正确的工具调用顺序。(一)第…...
iOS 15-16 iCloud激活锁绕过终极指南:applera1n工具深度解析与实战
iOS 15-16 iCloud激活锁绕过终极指南:applera1n工具深度解析与实战 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否面临二手iPhone无法激活的困境?或者忘记了Apple ID密码…...
Qwen3-14B镜像部署案例:汽车4S店智能顾问系统客户问答落地
Qwen3-14B镜像部署案例:汽车4S店智能顾问系统客户问答落地 1. 项目背景与需求分析 在汽车销售与服务行业,4S店每天需要处理大量客户咨询,包括车型参数、购车政策、维修保养等各类问题。传统客服模式面临三大痛点: 人力成本高&a…...
极坐标曲线绘制的艺术:从基础图形到复杂路径
1. 极坐标曲线绘制入门指南 第一次接触极坐标曲线时,我被它独特的数学美感深深吸引。与常见的直角坐标系不同,极坐标用距离和角度来描述点的位置,这种表达方式让某些图形的绘制变得异常简单。记得刚开始学习时,我花了整整一个周末…...
语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)
语义通信实战:轻量级图像压缩重建网络从零实现(PyTorch版) 在无人机巡检、远程医疗等物联网场景中,传统图像传输常面临带宽与功耗的双重压力。我们团队去年为某农业无人机项目部署图像识别系统时,发现传统JPEG2000压缩…...
实战:若依框架下异步日志管理器的设计与实现
1. 若依框架异步日志管理器的核心价值 在Web应用开发中,日志记录是系统监控和故障排查的重要依据。传统同步日志记录方式会阻塞主线程,导致用户请求响应时间延长。若依框架通过异步日志管理器完美解决了这个问题,我在多个生产项目中实测发现&…...
Bootbox.js终极指南:如何用可复用对话框提升开发效率
Bootbox.js终极指南:如何用可复用对话框提升开发效率 【免费下载链接】bootbox Wrappers for JavaScript alert(), confirm() and other flexible dialogs using Twitters bootstrap framework 项目地址: https://gitcode.com/gh_mirrors/bo/bootbox Bootbox…...
别再手动调格式了!用IEEEtran LaTeX模板搞定双栏论文排版(附完整代码包)
IEEEtran LaTeX模板实战:从零开始打造完美双栏学术论文 第一次投稿IEEE Trans系列期刊时,我花了整整三天调整论文格式——作者列表的星号标记总是错位,跨栏表格在PDF里溢出页面,算法伪代码的编号莫名其妙消失。直到实验室师兄丢给…...
关于 SSR,我承认我之前只是“会用”而已
SSR、Hydration 这些词在 Web 前端领域非常常见,开发者经常能接触到这个概念。但是,这些是什么?为什么?怎么用?过去我都没有深究下去,关于 SSR,我承认我之前只是“会用”而已。 一、区分 CSR 还…...
