首页 > 编程语言 >【C++学习笔记 8】C++中的析构函数

【C++学习笔记 8】C++中的析构函数

时间:2024-07-04 23:55:33浏览次数:22  
标签:销毁 函数 笔记 Entity C++ 析构 构造函数

构造函数一般用于创建实例或初始化,而析构(destructor)函数则是在销毁一个对象时使用的。析构函数可以用在释放任何内容或需要清理内存空间的场景。

举个例子

#include <iostream>

class Entity
{
public:
	float X, Y;
	Entity()
	{
		X = 0.0f;
		Y = 0.0f;
		std::cout << "Created Entity!" << std::endl;
	}
	~Entity()
	{
		std::cout << "Destroyed Entity!" << std::endl;
	}
	void Print()
	{
		std::cout << X << "," << Y << std::endl;
	}
};
void Function()
{
	Entity e;
	e.Print();
}
int main()
{
	Function();
	std::cin.get();
}

创建析构函数的方式是在函数名之前加一个~ ,其余的与构造函数的形式相同。运行上述代码,会得到如下结果。

Created Entity!
0,0
Destroyed Entity!

由于对象是在栈上创建的,所以当作用域结束时,即运行完Function()时,就将被销毁。因此,控制台上就会打印"Destroyed Entity!"。

析构函数本质上就是一个在对象被销毁时会被调用的特殊的方法,常被用于防止内存泄漏。`


教程来源:The Cherno C++ 教程

标签:销毁,函数,笔记,Entity,C++,析构,构造函数
From: https://blog.csdn.net/m0_59669215/article/details/140193076

相关文章

  • 【2024datawhale 分子AI预测赛笔记】数据挖掘速通Baseline -分类/回归
    赛题概述精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例,它是一种三元复合物由目标蛋白配体、linker、E3连接酶配体组成,靶向降解目标蛋白质。(研究PROTACs技术在靶向降解目标蛋白质方面的潜力。)提醒:需要python和机器学习基础。赛事任务根据提......
  • 2024华为OD机试真题-根据IP查找城市-(C++/Python)-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)       题目描述某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下:城市名=起始IP,结束IP起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔。比......
  • C++中的引用:深入理解与高效利用
    引言在C++编程世界中,引用(References)是一种强大的语言特性,它提供了一种直接访问另一个变量的方式,而无需复制其数据。相比于指针,引用在语法上更加直观、安全,是C++标准库以及现代C++编程风格中不可或缺的一部分。本文将带你深入理解C++中的引用,包括其基本用法、与指针的区别、......
  • C++中的日期与时间处理:全面指南
    引言在C++编程中,处理日期和时间是一个常见且重要的任务。从简单的日志记录到复杂的时间序列分析,日期和时间的准确获取与格式化都是不可或缺的。然而,C++标准库(直到C++20之前)对日期和时间的支持相对基础,主要通过<ctime>和<chrono>头文件提供。随着C++20的发布,标准库增加了对......
  • c++类模板及应用
    文章目录为什么要有函数模板一般实现举例类模板举例继承中类模板的使用特殊情况友元函数模板类和静态成员类模板实践为什么要有函数模板项目需求:实现多个函数用来返回两个数的最大值,要求能支持char类型、int类型、double一般实现举例类模板举例继承中类模......
  • vim学习笔记——多文件、多窗口编辑
    多文件编辑vimfile1file2...可以同时打开多个文件多文件编辑的按键:n编辑下一个文件:N编辑上一个文件:files列出目前这个vim开启的所有文件多窗口编辑命令模式下输入:sp[filename]即可进入多窗口编辑功能多窗口情况下的按键说明:sp[filename]打开......
  • vim学习笔记——可视区块
    vim的一般模式都是以行为单位进行操作的,可视区块提供了一种以列为操作单位的形式,在处理有特定格式的数据文件的时候效果很好。可视区块的按键含义v字符选择,会将光标经过的字符反白选择V行选择,会将光标经过的行反白选择ctrl+v可视区块,可以用矩形的方式选择字符y......
  • Intel DPC++安装与使用
    IntelDPC++安装与使用 DPC++(DataParallelC++)是Intel公司使用oneAPI实现的SYCL和SYCL编译器,这里记录一下V100服务器安装DPC++过程下载安装DPC++编译器前往官网下载地址,左侧选择Compilers->Intel®oneAPIDPC++/C++CompilerandIntel®C++CompilerClassic,选择目前最......
  • oier刷题笔记2024/7/4|康师傅饮用水
    字符串:P4391[BOI2009]RadioTransmission无线传输https://www.luogu.com.cn/problem/P4391kmp的next数组如果next[x]=len(0<len<x),那么就有s[len]=s[x];那么去掉s[x]后得到的[1,x-1]依旧是原串的循环子串,因为x为最短长度,所以可得next[x]一定为0;所以我们可以推论得到n......
  • 多线程笔记
    目录1.概念进程与线程的区别:多线程的概念 多线程优缺点​编辑创建多线程的几种方式1、继承Thread类2、实现Runnable接口3、实现Callable接口实现Runnable和Callable有什么区别:相同点:不同点:注意点:4、线程池实现多线程创建线程的方式的比较实现runnable和继承t......