【自用20.】C++析构函数

news/2024/10/19 13:22:24/

作用

对象销毁前,做清理工作。

具体的清理工作,一般和构造函数对应

比如:如果在构造函数中,使用new分配了内存,就需在析构函数中用delete释放。

如果构造函数中没有申请资源(主要是内存资源),

那么很少使用析构函数。

函数名:

~类型名

没有返回值,没有参数

并且最多只能有一个析构函数

访问权限:

一般都使用public

使用方法:

不能主动调用。对象销毁时,会自动调用。

如果不定义,编译器会自动生成一个析构函数(但是什么也不做)

代码如下

#include <iostream>
#include <Windows.h>
#include <string>
#include <string.h>using namespace std;// 定义一个“人类”
class Human {
public:Human();Human(int age, int salary);Human(const Human&);  //不定义拷贝构造函数,编译器会生成“合成的拷贝构造函数”Human& operator=(const Human&);~Human(); //析构函数//......private:string name = "Unknown";int age = 28;int salary;char* addr;
};Human::Human() {name = "无名氏";age = 18;salary = 30000;addr = new char[64];strcpy_s(addr, 64, "China");cout << "调用默认构造函数-" << this << endl;
}//......Human::~Human() {cout << "调用析构函数-" << this << endl;  //用于打印测试信息delete addr;
}void test() {Human h1;{Human h2;}cout << "test()结束" << endl;
}int main(void) {test();system("pause");return 0;
}

在测试函数中,h2的使用范围就是大括号之内,所以运行完大括号内的语句之后,h2对象将需要被销毁,自动调用析构函数销毁了h2对象,释放了结尾为58的空间

h1的使用范围是整个测试函数,所以测试函数结束的时候,自动调用析构函数销毁了h1对象,释放了结尾是88的空间。

 


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

相关文章

智能新纪元:GPT-Next引领的AI革命及其跨领域应用

GPT-Next&#xff1a;性能的百倍提升 在当今这个科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最具活力和变革性的领域之一。最近&#xff0c;OpenAI在KDDI峰会上宣布了一项激动人心的消息&#xff1a;他们即将推出名为“GPT-Next”的新一代语言模…

服务器蓝屏该怎么办

服务器蓝屏是一种常见但严重的问题&#xff0c;可能会导致系统无法正常工作和数据损失。遇到服务器蓝屏时&#xff0c;及时采取正确的措施至关重要。以下是处理服务器蓝屏的步骤&#xff1a; 1. 记录蓝屏错误信息 首先&#xff0c;记录下蓝屏错误代码和相关信息。这些信息通常显…

php redis session 多DB操作时异常记录

php redis session 多DB 操作异常记录 背景:某个TP项目使用redis 保存session,同时redis 内也保存了其他缓存数据,为了区分session 数据跟缓存数据,项目将session 数据保存于DB 0,缓存数据保存于其他DB; 问题:某些情况下会出现登录过期异常,但是手动查询redis 相关session 是…

在JS中flat() 和 flatMap()使用讲解

flat() 和 flatMap() 是 JavaScript 中处理数组的两个方法&#xff0c;用于处理嵌套数组&#xff0c;但它们有不同的用途和效果。以下是它们的详细区别&#xff1a; 1. Array.prototype.flat() 功能&#xff1a;将嵌套的数组“拉平”成一维数组。 语法&#xff1a; array.fla…

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案&#xff0c;可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器&#xff0c;将网站内容缓存到这些服务器上&#xff0c;并通过智能路由技术将用户的请求引导到最近的服务器上&#xff0c;以提供更快…

数据同步方式何来“高级”与“低级”之说?场景匹配才是真理!

导读&#xff1a;数据同步方式的重要性对于数据集成领域的兴从业者不言而喻&#xff0c;选择正确的数据同步方式能让数据同步工作的成果事半功倍。目市面上的数据同步工具很多&#xff0c;提供的数据同步方式也有多种&#xff0c;不同的数据同步方式有什么区别&#xff1f;如何…

linux线程cp模型,posix信号量,线程池,线程封装,单例模型,懒汉饿汉实现方式,自旋锁,读者写者模型

1.生产者消费者模型 前面的同步&#xff0c;我们并没有一个很好的场景来模拟同步&#xff0c;只是简单的将有序的现象输出出来&#xff1b;现在我们来讲解一个比较合理且常见的模型——生产者消费者模型&#xff1b; 1.1模型理解 什么是生产者消费者模型&#xff1a; 这个模…

SVN的使用技巧

SVN&#xff08;Subversion&#xff09;是近年来崛起的版本管理工具&#xff0c;因为是免费的&#xff0c;所以用的人还是不少的。故做一些总结。 如果是新手&#xff0c;基本对SVN一点都不了解的话&#xff0c;建议去学习一下这个系统的教程&#xff0c;讲的也很详细Tortoise…