【C++】从入门到精通第二弹——类的构造与析构函数
这里写目录标题
- 类的构造函数
- 类的析构函数
写在最前面的话
——构造函数和析构函数是两个特殊的成员函数,都没有返回值,构造函数名和类名相同,析构函数名只是在类名前加上 ~
构造函数主要用来在创建对象时给对象中的数据成员赋值,主要目的是初始化对象,
析构函数的功能与构造函数正好相反,析构函数是用来释放对象的,再删出对象前,对对象进行清理工作。
类的构造函数
当建立一个类的对象时,构造函数就会默认被调用,如果用户不提供构造函数,编译器就会自动实现一个空的构造函数。所以构造函数的主要作用就是完成某些初始化的工作,一般来说,比如设置类成员属性操作,对成员数据赋值等
构造函数类内实现
1 #include<iostream>2 using namespace std;3 class Person4 {5 public:6 Person(int age, int height)7 {8 this->age = age;9 this->height = height;10 };11 void show()12 {13 cout<<"age = "<<age<<endl;14 cout<<"height = "<<height<<endl;15 }16 private:17 int age;18 int height;19 20 21 };22 23 24 int main()25 {26 Person p(45,123);27 p.show();28 29 return 0;30 }
~
类外实现:
1 #include<iostream>2 using namespace std;3 class Person4 {5 public:6 /* Person(int age, int height)7 {8 this->age = age;9 this->height = height;10 };*/11 Person(int age,int height);//注意一定要在类内先声明12 void show()13 {14 cout<<"age = "<<age<<endl;15 cout<<"height = "<<height<<endl;16 }17 private:18 int age;19 int height;20 21 22 };23 Person::Person(int age,int height)24 {25 26 this->age = age;27 this->height = height;28 }29 30 31 int main()32 {33 Person p(45,123);34 p.show();35 36 return 0;37 }
复制构造函数
1 #include<iostream>2 using namespace std;3 class Person4 {5 public:6 /* Person(int age, int height)7 {8 this->age = age;9 this->height = height;10 };*/11 Person(int age,int height);//注意一定要在类内先声明Person::Person(Person &pp);//复制构造函数12 void show()13 {14 cout<<"age = "<<age<<endl;15 cout<<"height = "<<height<<endl;16 }17 private:18 int age;19 int height;20 21 22 };23 Person::Person(int age,int height)24 {25 26 this->age = age;27 this->height = height;28 }29 Person::Person(Person &pp)30 {this->age = pp.age;this->height = pp.height; }int main(){Person p(45,123);p.show();Person pp(p);pp.show();return 0;}
注意:如果当用户忘记显示声明的默认构造函数,会导致链接出错,所以当我们使用自定义的默认构造函数时必须能实现,哪怕是空实现。
类的析构函数
1 #include<iostream>2 #include<string.h>3 using namespace std;4 class Person5 {6 public:7 Person();8 ~Person();9 void show();10 char* message;11 };12 Person::Person()13 {14 15 message = new char[1024];16 }17 void Person::show()18 {19 strcpy(message,"fsvfg");20 21 cout<<"message = "<<message<<endl;22 }23 Person::~Person()24 {25 delete []message;26 }27 int main()28 {29 Person p;30 p.show();31 32 return 0;33 }34
注意:
一个类中只能出现一个析构函数
析构函数不能发生重载
不管是构造函数还是析构函数都不能使用return语句,没有返回值
在不同的环境下构造函数和析构函数调用规则如下:
自动变量的作用域是某个模块,当此模块被激活时,调用构造函数,当退出此模块时,调用析构函数。
全局变量在进入main函数之前调用构造函数,在程序终止时调用析构函数。
动态分配的对象在使用new为对象分配内存时调用构造函数,使用delete删除对象时调用析构函数。
临时变量是编译器为支持计算自动产生的,临时变量生存期的开始和结束点会调用构造函数和析构函数。
相关文章:
【C++】从入门到精通第二弹——类的构造与析构函数
这里写目录标题 类的构造函数类的析构函数 写在最前面的话 ——构造函数和析构函数是两个特殊的成员函数,都没有返回值,构造函数名和类名相同,析构函数名只是在类名前加上 ~ 构造函数主要用来在创建对象时给对象中的数据成员赋值,…...
C#8.0本质论第十一章--异常处理
C#8.0本质论第十一章–异常处理 11.1多异常类型 用关键字throw抛出异常实例,所选的异常类型应该能最好地说明发生异常的背景。 11.2捕捉异常 发生异常时,会跳转到与异常类型最匹配的catch块执行,匹配度由继承链决定。 从C#6.0起…...
FPGA高端项目:图像缩放+GTP+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持
目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案我这里已有的图像处理方案 3、设计思路框架设计框图视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择…...
ansible安装和常见模块
文章目录 ansible的安装1.1 yum install epel-release.noarch1.2配置epel源的baseurl1.3安装ansible1.4安装ansible报错问题1.5 yum卸载 ansible的安装 ansible是由epel源提供的,所以需要配置epel源。要么通过配置好的baseos源直接执行“yum install epel-release.…...
【Python基础】 Python设计模式之单例模式介绍
单例模式 1.设计模式2.单例设计模式的应用场景3.new方法4. Python 中的单例 1.设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案使用 设计模式 是为了可重用代码、让代码更容易被他人理…...
算法小白的心得笔记:关于Nan
NaN 是什么 在C中,NaN(Not a Number)是一种特殊的浮点数值,用于表示无法表示的数值或未定义的操作,例如0除以0。如果你的double类型变量显示为NaN,那么可能是在计算过程中出现了这种未定义的操作。 如果你…...
Photoshop 2023 v24.7
Photoshop是一款强大的图像编辑软件,被广泛应用于图像处理、图形设计、数字绘画等领域。它提供了丰富的图像编辑功能,可以用于调整图像的色彩、亮度、对比度等,添加特效、滤镜,以及进行复杂的图像合成和修复。 以下是Adobe Photo…...
进程间通信(IPC)-管道、消息队列、信号量、共享存储、socket
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道PIPE和命名管道FIFO)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持…...
「Verilog学习笔记」使用generate…for语句简化代码
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 generate…for语句是Verilog HDL语言特有的语句,使用循环结构编写可综合的多个形式相近的代码,循环变量必须由特定关键字genvar声明。 timesca…...
互联网Java工程师面试题·Spring篇·第七弹
目录 36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子. 37、什么是基于注解的容器配置? 38、怎样开启注解装配? 39、Required 注解 40、Autowired 注解 41、Qualifier 注解 42、在 Spring 框架中如何更有效地使用 JDBC? 43、JdbcTemplate 44…...
mysql驱动包引起的告警问题using SSL the verifyServerCertificate property is set to ‘false‘
tomcat启动时报以下ssl的连接错误,mysql版本为5.7.17,虽然系统可以使用,但是日志量太大,还是处理下,只需要修改mysql的连接格式: url.db “jdbc:mysql://localhost:3306/disis3?userroot&passwordXXXX…...
draw.io与项目管理——如何利用流程图工具提高项目管理效率
draw.io 是一款强大的图形绘制工具,用于创建各种类型的图表、流程图、组织结构图、网络图和平面设计等。它提供了丰富的绘图工具和预定义的图形库,使用户能够轻松创建专业水平的图形作品。 draw.io具有直观的界面和简单易用的功能,适合各种用…...
LoRaWAN物联网架构
与其他网关一样,LoRaWAN网关也需要在规定的工作频率上工作。在特定国家部署网关时,必须要遵循LoRa联盟的区域参数。不过,它是没有通用频率的,每个国家对使用非授权MHZ频段都有不同的法律规定。例如,中国的LoRaWAN频段是…...
数据结构(五):哈希表及面试常考的算法
一、哈希表介绍 1、定义 哈希表,也叫散列表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。例如,下列键(key)为人名…...
水利部加快推进小型水库除险加固,大坝安全监测是重点
国务院常务会议明确到2025年前,完成新出现病险水库的除险加固,配套完善重点小型水库雨水情和安全监测设施,实现水库安全鉴定和除险加固常态化。 为加快推进小型水库除险加固前期工作,水利部协调财政部提前下达了2023年度中央补助…...
实施电子采购的6个有效步骤
耗时又费力,手动采购之苦相信大家都受够了,现在越来越多的企业正在实施电子采购策略。根据CIPS的《2022年采购与供应数字化报告》,多达95%的企业在采购与供应商管理中采用了技术。 但采用技术并不能保证立竿见影的效果。企业需要制定好电子采…...
【Shell脚本6】Shell 运算符
Shell 基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算术运算符关系运算符布尔运算符逻辑运算符字符串运算符文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 …...
设计模式之保护性暂停
文章目录 1. 定义2. 实现保护性暂停模式3. Join原理4. 保护性暂停模式的扩展 1. 定义 即Guarded Suspension,用在一个线程等待另一个线程的执行结果。 有一个结果需要从一个线程传递给另一个线程,让他们关联到同一个GuarderObject(这就是保…...
UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式)
文章目录 1.实现目标2.实现过程2.1 实现原理2.1.1 数据读取2.1.2 三角剖分2.1.3 创建StaticMesh2.2 应用测试2.2.1 具体代码2.2.2 蓝图应用测试3.参考资料1.实现目标 通过读取本地GeoJson数据,在UE中以StaticMeshComponent的形式绘制出面数据,支持Editor和Runtime环境,GIF动…...
Linux 下以其他用户运行程序
需求: 在root的用户下,设置开启自启,这些服务都要用一个swadmin用户运行。 1、创建需要执行的命令脚本 vim /usr/local/bin/start_services.sh#!/bin/bash runuser -l swadmin -c cd /opt/server/ && ./service.sh start s-app-ser…...
NI USB-6210 DAQ采集卡开箱照
1、包装非常简单,有点对不起它6000~7000元的价格:2、 内部也没有什么特别的:3、一张用户须知,一本使用说明:4、一张光盘,感觉有点Low,现在电脑很少有光驱了:5、这条USB线据说要200大…...
DownKyi跨平台存储管理指南:从问题诊断到云存储整合
DownKyi跨平台存储管理指南:从问题诊断到云存储整合 【免费下载链接】downkyicore 哔哩下载姬(跨平台版)downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去…...
实战指南:使用快马平台开发基于codex的vscode智能sql查询助手
实战指南:使用快马平台开发基于Codex的VSCode智能SQL查询助手 最近在开发过程中,我发现编写和优化SQL查询是个挺费时间的事情。特别是当业务逻辑复杂时,经常要反复调试语法和性能问题。于是我想,能不能利用AI来辅助这个流程&…...
LinkSwift:开源网盘直链解析引擎的技术解析与部署指南
LinkSwift:开源网盘直链解析引擎的技术解析与部署指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...
保姆级教程:AI全身全息感知镜像部署,手把手教你实现543点动作捕捉
保姆级教程:AI全身全息感知镜像部署,手把手教你实现543点动作捕捉 1. 引言:全息感知技术的平民化革命 想象一下,只需一台普通电脑,就能实现电影级别的动作捕捉效果——这正是AI全身全息感知技术带来的变革。传统动作…...
C++ STL 容器选型实战:vector/list/map/unordered_map 性能对比与选型指南
一、前言:为什么容器选型是 C 工程的核心?在 C 后端开发、Qt 桌面应用、高性能服务器、嵌入式系统、游戏引擎、实时仿真、数据分析等几乎所有工业级项目中,STL 容器的选型直接决定程序性能、内存占用、可维护性与稳定性。很多开发者习惯随手写…...
19. 浮力产生原因演示
8. 浮力产生原因演示 功能介绍: 利用动画演示浮力产生的根本原因——液体对物体上下表面的压力差。界面显示浸没在水中的立方体,侧面标注上下表面的压强 (P=ρghP=\rho ghP=ρgh...
千问3.5-2B视觉理解作品分享:电商商品图识别、医疗报告图解析、工业仪表读数案例
千问3.5-2B视觉理解作品分享:电商商品图识别、医疗报告图解析、工业仪表读数案例 1. 视觉理解模型简介 千问3.5-2B是Qwen系列中的小型视觉语言模型,它能够同时理解图片内容和处理自然语言。这个模型最特别的地方在于,你只需要上传一张图片&…...
实测霜儿-汉服-造相Z-Turbo:8秒生成高清汉服写真,新手也能轻松出图
实测霜儿-汉服-造相Z-Turbo:8秒生成高清汉服写真,新手也能轻松出图 1. 为什么选择这个汉服写真生成工具 在尝试过多个AI绘画工具后,我发现大多数模型在生成汉服人像时都存在几个共同问题:服饰细节模糊、人物比例失调、背景与主体…...
零售AI开发者必看:Ostrakon-VL-8B终端从部署到任务执行完整指南
零售AI开发者必看:Ostrakon-VL-8B终端从部署到任务执行完整指南 1. 项目概览:像素特工终端 Ostrakon-VL-8B是一款专为零售与餐饮场景优化的多模态大模型,我们将其封装成了一个充满游戏趣味的Web交互终端。与传统工业级UI不同,这…...
