构造函数和析构函数

news/2024/12/2 10:09:15/

8.构造函数:

概念:

构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证

每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。

性质:

1.函数名与类名相同:

2.与返回值(不需要写void)

3.对象实例化编译器自动调用对应的构造函数。

d1对应无参

d2对应有参

4.构造函数可以重载:

5.如果类中没有显示定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显示定义编译器将不在产生:

可以看出编译器自己初始化后是随机值,这是一个c++的官方bug。

bug的弥补:

可以在内置类型中对变量声明。

注意:

1.一般情况下,有内置类型成员,就要考虑自己写构造函数,不能用编译器自己生成的。

2.全都是自定义类型成员,可以考虑让编译器自己生成。

6.编译器自己初始化后还是随机值,那么编译器到底初始化了没有?

答:初始化了

7.无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只有一个。

注意:

无参构造函数,全缺省构造函数,那写编译器默认生成的函数,都可以认为是默认构造函数。

可以看见错误中有包含多个默认构造函数,上述一个为无参构造函数,一个为全缺省构造函数,都为默认构造函数,所以冲突了。

9.析构函数:

1.析构函数名是在类名前加上一个字符~

2.无参数无返回值(对应不能重载)

3.系统会默认生成析构函数:

1.内置类型成员不做处理

2.自定义类型会调用它的析构函数

4.对象生命周期结束后,c++编译系统将自动调用析构函数

那么在那种情况下可以使用默认的析构函数,哪种情况下不行?

1.一般情况下,有动态内存申请的资源,就需要写析构函数,释放资源:

2.没有动态申请的资源,不需要写析构

3.需要释放自定义类型,不需要写析构


http://www.ppmy.cn/news/56116.html

相关文章

FreeRTOS(三)——应用开发(一)

文章目录 0x01 FreeRTOS文件夹FreeRTOSConfig.h文件内容上面定义的宏决定FreeRTOS.h文件中的定义0x02 创建任务创建静态任务过程configSUPPORT_STATIC_ALLOCATION创建动态任务过程configSUPPORT_DYNAMIC_ALLOCATION 0x03 FreeRTOS启动流程启动流程概述 0x04 任务管理任务调度器…

gcc:升级编译器版本

Ubuntu(22.04)下升级gcc和g++的方法 1.添加工具链 sudo add-apt-repository ppa:ubuntu-toolchain-r/test 2.更新apt软件列表 sudo apt update 3.安装最新的gcc和g++ Toolchain test builds : “PPA for Ubuntu Toolchain Uploads (restricted)” team 可以通过这个页面查询…

Kubernetes Controller原理讲解

Controller原理 在 K8s 中,用户通过声明式 API 定义资源的“预期状态”,Controller 则负责监视资源的实际状态,当资源的实际状态和“预期状态”不一致时,Controller 则对系统进行必要的更改,以确保两者一致&#xff0…

汇编语言(第3版)- 学习笔记 - 第1章-基础知识

汇编语言(第3版)- 学习笔记 - 第1章-基础知识 1.1 机器语言1.2 汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线1.11 内存地址空间(概述)1.12 主板1.13 接口卡1.14 各…

WhatsApp CRM:通过 CRM WhatsApp 集成向客户发送消息

WhatsApp CRM:通过 CRM WhatsApp 集成向客户发送消息 你是否在寻找一个支持WhatsApp整合的CRM?或者,你想将WhatsApp与你当前的CRM整合?这篇文章将回答你所有的问题。我们将首先了解什么是WhatsApp CRM,以及你需要知道…

SVG中line标签的使用以及其外观属性的运用

什么是SVG Scalable Vector Graphics (SVG)是一种基于XML的标记语言,用于描述二维矢量图形。与像素图(例如JPEG或PNG)不同,矢量图形不会失真或变得模糊,无论它们被放大或缩小到多大的尺寸,都能保持清晰。 …

Elasticsearch --- 简介、安装

一、简介 1.1、elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 1.2、ELK技术栈 elas…

架构师应该关注哪些关键节点?

架构师视角下的架构活动全生命周期。在整个周期中,一共有八个需要关注的节点。 节点一:搭建架构环境 架构师在架构活动的第一步就是为它搭建一个架构环境。遗憾的是,很多架构师由于没有认识到这个环节的内在价值,所以常常忽略了…