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

C++继承、构造函数和析构函数

构造函数 与 析构函数

构造函数代表一个对象的生成,主要作用是初始化类的成员变量,可以被重载
如果没有显式构造函数,则实例化对象时,系统会自动生成一个无参的构造函数
构造函数的名称与类名相同

析构函数代表的是一个对象的销毁,不可以被重载
析构函数的名称是 ~类名()

class Animal
{
public:string name;int age;Animal():name("dog"), age(12)  //显式无参构造函数,这里借助c++11的列表初始化{cout << "这是无参构造函数" << endl;}Animal(string name, int age)  //显式有参构造函数{this->name = name;this->age = age;cout << "这是有参构造函数" << endl;}~Animal(){};  //析构函数
};Animal dog1; //会调用无参构造函数
Animal dog2("xiaohei",12); //会调用显式有参构造函数

注意事项:构造函数/析构函数 如果显式调用,则必须是public权限

C++封装

作用:保证数据安全性

三种权限
public:类内可以访问 子类可以访问 类外可以访问
protected:类内可以访问 子类可以访问 类外不可以访问
private:类内可以访问 子类不可以访问 类外不可以访问

C++继承

作用:实现代码复用,节省代码量

继承中的构造函数和析构函数

class Animal
{
public:string name;int age;Animal():name("dog"), age(12){cout << "这是基类无参构造函数" << endl;}Animal(string name, int age){this->name = name;this->age = age;cout << "这是基类有参构造函数" << endl;}~Animal(){cout << "这是基类析构函数" << endl;}
};class Dog:public Animal  //公有继承自Animal类
{
public:string name;int age;Dog(){cout << "这是Dog类无参构造函数" << endl;}Dog(string name, int age){this->name = name;this->age = age;cout << "这是Dog类有参构造函数" << endl;}~Dog(){cout << "这是Dog类析构函数" << endl;}
};void Func1()
{Dog dog1();Dog dog2("小黑", 12);
}int main()
{Func1();system("pause");
}

在这里插入图片描述

基类的构造函数和析构函数不会继承给派生类,但会在派生类生成对象时调用
构造函数调用顺序:先调用基类无参构造函数,再调用派生类的构造函数,如果想要调用基类的有参构造函数,需要显式调用 Dog(string name, int age) : Animal(name, age)
析构函数调用顺序:先调用派生类析构函数,再调用基类析构函数

顺便讲一下函数重载、函数重定义和函数重写的区别

函数重载:函数名相同,函数参数列表不同(参数类型、参数顺序、参数个数),通过传入不同的实参,调用不同的函数,执行不同的功能
函数重定义:当发生继承关系的时候,子类和父类存在同名函数,子类会 隐藏 父类的同名函数,执行自己的函数
函数重写:当发生继承关系的时候,父类提供虚函数,子类 重写(覆盖) 父类的虚函数,展现的是子类的功能

相关文章:

C++继承、构造函数和析构函数

构造函数 与 析构函数 构造函数代表一个对象的生成&#xff0c;主要作用是初始化类的成员变量&#xff0c;可以被重载 如果没有显式构造函数&#xff0c;则实例化对象时&#xff0c;系统会自动生成一个无参的构造函数 构造函数的名称与类名相同 析构函数代表的是一个对象的销…...

Python如何实现异步并发之async(1)

前言 本文是该专栏的第14篇,后面会持续分享python的各种干货知识,值得关注。 在python中使用async方式,实现异步并发,而本文笔者提到的代码案例仅支持python3.7及以上版本,这主要在于不同的版本之间都更新了异步的使用方法,这点暂时不详述了。 而所谓的异步,通常就是程…...

震撼!阿里首次开源 Java 10万字题库,Github仅一天星标就超60K

程序员面试 现在是程序员找工作、跳槽最重要的月份。随着行业的发展程序员面试也越来越难&#xff0c;面试中都是7分的能力&#xff0c;再加上3分的技巧&#xff1b; 对于应聘者&#xff0c;重中之重的就是简历&#xff0c;面试前一定要将最拿手和最能吸引面试官的技能在简历…...

十三、RESTful API

RESTful API 什么是RESTful REST一词&#xff0c;是Roy Thomas Fielding在他2000年的博士论文中提出的。 Fielding是一个非常重要的人&#xff0c;他是HTTP协议&#xff08;1.0版和1.1版&#xff09;的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所…...

路由器防火墙配置(14)

实验目的 通过本实验&#xff0c;理解路由器的防火墙工作原理&#xff0c;掌握路由器的防火墙功能配置方法&#xff0c;主要包括网络地址转换功能和数据包过滤功能的配置。 培养根据具体环境与实际需求进行网络地址转换及数据包过滤的能力。 预备知识网络地址转换 网络地址转…...

灰狼算法优化VMD对时序信号分析python

VMD算法变分模态分解(VMD)算法是一种根据变分方程计算,将信号分析过程转换成求解变分方程的过程,具体分析过程可见前面写的另外一篇博客VMD,这里不多介绍。 VMD算法在进行信号分析时,将一段时序信号分解成不同频段的几个子信号,但其分解效果的好坏由其两个参数影响较大—…...

微服务架构中的多级缓存设计还有人不懂?

今天我们来聊聊缓存这个话题&#xff0c;看看在微服务环境下如何设计有效的多级缓存架构。主要涉及三方面内容&#xff1a; Web 应用的客户端缓存&#xff1b;应用层静态资源缓存&#xff1b;服务层多级缓存。 首先&#xff0c;咱们先讲解微服务架构的多级缓存设计。 微服务…...

【图神经网络 医学/药物/目标/分子/(结构/相互作用)预测】用于药物-目标相互作用预测的元集合(Metapath)异构图神经网络(MHGNN)

May the immensity of the universe, guide us to meet again. 我个人觉得这篇Paper很好。哈哈! 本次学习的Paper于2023年1月15日索引于 Web of Science,是比较新的。 作者:中国天津,南开大学计算机科学学院。 本篇Paper的研究方向(类别/分类):生物化学 & 分子生物学…...

《Java核心技术》笔记——第六章

文章目录CH6.接口、lambda表达式与内部类1.接口基本2.常用接口3.lambda表达式4.内部类5.服务加载器与代理前章&#xff1a; 第三章~第五章的学习笔记CH6.接口、lambda表达式与内部类 1.接口基本 接口基本——interface声明&#xff0c;方法无需指明public&#xff08;默认都是…...

假设检验的基本思想

假设检验 首先了解参数估计&#xff0c;比如有服从正态分布的数据集X∼N(μ,σ2)X\sim N(\mu,\sigma^{2})X∼N(μ,σ2)&#xff0c;我们希望根据样本x1,...xnx_{1},...x_{n}x1​,...xn​估计出参数μ,σ\mu,\sigmaμ,σ&#xff0c;这些参数可以是一个具体值&#xff0c;也可以…...

c语言机试练习

1.打印日期 给出年分m和一年中的第n天&#xff0c;算出第n天是几月几号。 输入描述&#xff1a; 输入包括两个整数y(1<y<3000)&#xff0c;n(1<n<366)。 输出描述&#xff1a; 可能有多组测试数据&#xff0c;对于每组数据&#xff0c; 按 yyyy-mm-dd的格式将输入中…...

Python的PyQt框架的使用-资源文件夹的使用

Python的PyQt框架的使用-资源文件夹的使用一、前言二、Qt Designer加载资源文件三、资源文件的转换一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的使用。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三…...

如何遍历HashMap

文章目录1.Iterator EntrySet2.Iterator keySet3.forEach EntrySet4.forEach keySet5.lambda6.Streams API单线程7.Streams API 多线程1.Iterator EntrySet Iterator<Map.Entry<Integer,String>> iteratormap.entrySet().iterator; while(iterator.hasNext()){Map…...

11技术太卷我学APEX-数据加载

11技术太卷我学APEX-数据加载 0 所谓的数据加载 就是导入数据到数据库表中&#xff0c;本示例就采用Excel导入数据到《技术太卷我学APEX》的apex_learn表。表结构大概是这样的 CREATE TABLE "APEX_LEARN" ( "P_ID" NUMBER(17,0) NOT NULL ENABLE, &quo…...

JVM记录

一、JVM体系结构&#xff1a; 类装载器ClassLoader&#xff1a;用来装载.class文件执行引擎&#xff1a;执行字节码&#xff0c;或者执行本地方法运行时数据区&#xff1a;方法区、堆、Java栈、程序计数器、本地方法栈1、方法区&#xff1a; 也称“永久代”&#xff0c;“非堆”…...

盘点机器学习实战中最频繁使用的AutoML工具库

在日常的Kaggle比赛和工作中&#xff0c;经常会遇到AutoML工具。本文总结了常见的AutoML库&#xff0c;可供大家选择。 LightAutoML 项目链接&#xff1a;https://github.com/sberbank-ai-lab/LightAutoML 推荐指数&#xff1a;⭐⭐⭐ LightAutoML是基于Python环境下的结构…...

50-Jenkins-Lockable Resources插件实现资源锁定

Lockable Resources插件实现资源锁定前言安装插件使用插件资源配置Pipeline中使用前言 用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合&#xff0c;或者仅仅是一个用于上锁的名字。如果指定的资源没有在全…...

测试员,如果未来5年你不想失业……你得学会自动化测试

工作中总会遇到各种各样的无常&#xff0c;这边测试工具的工作你刚刚接手&#xff0c;那边又临时紧急插播一个接口测试任务&#xff0c;这对于测试老鸟来说已然是常态&#xff0c;但对新手来说却是个挑战。 不得不承认&#xff0c;工作就是在无限的变化和挑战中不断的磨炼我们…...

腾讯开源的 hel 提供了加载远程模块的能力,谈谈它的实现原理

腾讯开源的 hel&#xff0c;提供了一种运行时引入远程模块的能力&#xff0c;模块部署在 CDN&#xff0c;远程模块发布后&#xff0c;不需要重新构建发布&#xff0c;就能生效。 个人觉得它的实现原理非常的不错&#xff0c;因此分享给大家。 远程模块可以作为微模块&#xf…...

【运动控制】CNC三轴小线段路径规划

CNC三轴小线段路径规划 文章目录CNC三轴小线段路径规划一、项目说明二、具体实现1、速度规划2、小线段插补3、运动学逆解刀轴插补点4、差分处理得到实际的速度和加速度5、加速度滑动平均6、实现的效果如图所示三、Reference写在前面&#xff0c;本文是作为一个练手小项目的总结…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...