类的函数成员(二):析构函数

news2024/11/26 0:41:25

一.定义

        析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作。

        例如,在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存。

        析构函数有如下特点:

1.  构函数名与类名相同,但在前面加上字符‘~’。
2.  析构函数无函数返回类型,与构造函数在这方面是一样的。但析构函数不带任何参数。
3. 一个类有一个也只有一个析构函数,这与构造函数不同。析构函数可以缺省。
4. 对象注销时,系统自动调用析构函数。

        格式如下:

class 类名
{
    ~类名()
    {
        ...
    }
}

类名::~类名()
{
    ...
}

        例如,如下定义是合法的:

class CStudent
{

    ~CStudent();
}

CStudent::~CStudent()
{
    ...
}

二.析构函数的作用

        下面用一个实例代码说明析构函数的作用。

#include<iostream>

using namespace std;

class Test
{
public:
	Test();
	~Test();
	
private:
	int *age;     
};

Test::Test()
{
	this->age = new int(0); 
}

Test::~Test()
{
	delete age;
	
	cout<<"Destructor"<<endl;
}

int main()
{
     Test *t = new Test();
     delete t;
};

        运行结果如下图。析构函数被自动调用。

三.应用实例

        下面结合构造函数,举一个简单的实际应用例子。

#include <string.h>
#include <iostream>

using namespace std;

class CStudent
{
public:
	//构造函数
	CStudent(const char *name,char sex,int score);	
	
	void display(void);
	
	//析构函数
	~CStudent();

private:
	char name[50];
	char sex;
	int  score;
};

CStudent::CStudent(const char *name,char sex,int score)
{
	strcpy(this->name, name);
	this->sex = sex;
	this->score = score;
}

void CStudent::display(void)
{
	cout<<"name	: "<<name<<endl;
	cout<<"sex 	: "<<sex<<endl;
	cout<<"score: "<<score<<endl;
}

CStudent::~CStudent() //析构函数
{
	cout<<"Destructor!"<<endl;
}
	
	
int main()
{
    CStudent stu1("Jony",'M', 80);
	CStudent stu2("Lily", 'W',90);
	
    stu1.display();
    stu2.display();
	
    return 0;
}

        运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单链表就地逆置

算法思想&#xff1a;构建一个带头结点的单链表L&#xff0c;然后访问链表中的每一个数据结点&#xff0c;将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…

Mysql重点思考(上)--mysql的索引优化

mysql的索引优化 expalin关键字的用法explain索引优化示例 type列用法执行查询的顺序类型概述 索引概念索引的定义索引的分类主键&唯一区别 唯一索引的创建和查询创建一个唯一索引查询一个唯一索引 场景题合集唯一索引的场景题主键索引的场景题&#xff08;B树&#xff09;…

蓝桥备赛——矩阵读入

题目描述 如上图所示&#xff0c;是一道有关二维前缀和的问题&#xff0c;因为涉及到二维&#xff0c;肯定就是以矩阵的形式进行读入的。 为此&#xff0c;针对矩阵的读入形式进行总结&#xff0c;可以大致总结出两种类型如下&#xff1a; 二维列表推导式 n, m, k map(int…

HTML教程(详细汇总)

目录 前言&#xff1a; Sublime Text(收费): VS Code(免费): HBuilderX(免费): Dreamweaver(免费): Webstorm(收费): 一.网站的概念&#xff1a; 1.什么是网页&#xff1a; 2.什么是网站&#xff1a; 3.服务器&#xff1a; 总结&#xff1a; 二.HTML简介&#xff…

【JavaEE初阶系列】——CAS

目录 &#x1f388;什么是 CAS &#x1f4dd;CAS 伪代码 &#x1f388;CAS 是怎么实现的 &#x1f388;CAS 有哪些应用 &#x1f6a9;实现原子类 &#x1f308;伪代码实现: &#x1f6a9;实现自旋锁 &#x1f308;自旋锁伪代码 &#x1f388;CAS 的 ABA 问题 &#…

黄金票据制作-新手向

黄金票据制作 文章目录 黄金票据制作0x01 前言0x02 黄金票据的制作一、靶场搭建二、收集制作信息获取域名称获取域SID值获取域用户krbtgt密码hash值 二、制作票据 0x03 验证票据有效性 0x01 前言 最近&#xff0c;我学习了内网渗透的相关知识&#xff0c;其中包括了黄金票据的…

浏览器页面缓存机制

HTTP缓存机制的核心思想是&#xff0c;对于已经请求过的资源&#xff0c;如果其在服务器上没有发生变化&#xff0c;那么浏览器就可以直接从本地缓存中获取这些资源&#xff0c;而无需再次向服务器发送请求。 强缓存 就是确定可用的缓存 浏览器和和服务器对每个缓存资源先商量一…

fread和fwirte函数

✨✨ 欢迎大家来到莉莉的博文✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 一、fread函数 ——>从文件流中读取二进制数据到ptr指向的数组 从流&#xff08;二进制文件&#xff09;中读取数据块 ptr&#xff1a;指向大小至…

基于JSP在线订花系统

基于JSP在线订花系统的设计与实现 摘要 近年来&#xff0c;随着人们对于生活品质的重视度日益提升&#xff0c;鲜花的需求量也在不断增加同时带动了鲜花电商的飞速发展和应用&#xff0c;平台化的鲜花交易模式也逐渐从传统的鲜花销售转型为个性化鲜花定制。同时随着鲜花速递行…

基于 RisingWave 和 ScyllaDB 构建事件驱动应用

概览 在构建事件驱动应用时&#xff0c;人们面临着两大挑战&#xff1a;1&#xff09;低延迟处理大量数据&#xff1b;2&#xff09;实现流数据的实时摄取和转换。 结合 RisingWave 的流处理功能和 ScyllaDB 的高性能 NoSQL 数据库&#xff0c;可为构建事件驱动应用和数据管道…

MTMT:构建比特币生态平行世界 打造铭文生态繁荣

近年来&#xff0c;随着铭文市场的火爆以及比特币ETF成功通过&#xff0c;比特币生态正经历着一场复兴&#xff0c;尤其是铭文市场作为新一代Web3的叙事&#xff0c;带来了全新的生产方式&#xff0c;可以预见&#xff0c;铭文就像流动性挖矿对于上一轮DeFi Summer的推动一样会…

KNN算法 | K近邻:KD Tree、球树、KNN数据下采样策略

目录 一. KNN算法实现方式1. 蛮力实现(brute)2. KD树(kd_tree)3. 球树(ball_tree) 二. KD Tree算法1. 构建方式2. KD Tree 查找最近邻 三. 球树(Ball Tree)1. 构建方式 四. KNN评价1. 优点2. 缺点 五. 延申1. KNN数据下采样策略策略1策略2策略3策略4 Condensed Nearest Neighbo…

Macs Fan Control Pro--精准掌控Mac风扇,优化散热新选择

Macs Fan Control Pro是一款专为Mac电脑设计的高级风扇控制工具。它具备强大的温度监测能力&#xff0c;可以实时监测Mac电脑各个核心组件的温度&#xff0c;并通过直观的界面展示给用户。同时&#xff0c;用户可以根据个人需求自定义风扇速度&#xff0c;或者选择预设的自动风…

蓝桥杯算法题-图形排版

题目描述 小明需要在一篇文档中加入 N 张图片&#xff0c;其中第 i 张图片的宽度是 Wi&#xff0c;高度是 Hi。   假设纸张的宽度是 M&#xff0c;小明使用的文档编辑工具会用以下方式对图片进行自动排版&#xff1a; 1. 该工具会按照图片顺序&#xff0c;在宽度 M 以内&…

LabVIEW转动设备故障诊断系统

LabVIEW转动设备故障诊断系统 随着工业自动化技术的不断进步&#xff0c;转动设备在电力、化工、船舶等多个行业中扮演着越来越重要的角色。然而&#xff0c;这些设备在长期运行过程中难免会出现故障&#xff0c;如果不能及时诊断和处理&#xff0c;将会导致生产效率下降&…

【JavaSE】一维数组和二维数组详解

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 一维数组 基本语法 初始化 遍历和打印 数组是引用型变量 基本类型变量与引用类型变量的区别 null 数组传参和返回 总结 二维数组 基本语法 初始化 遍历和打印 一维数组…

排序——非基于比较的排序

本专栏和大家分享关于排序的算法,其中有插入排&#xff08;直接插入排序和希尔排序&#xff09;、选择排序&#xff08;直接选择排序和堆排&#xff09;、交换排序&#xff08;冒泡排序和快速排序&#xff09;、归并排序以及其他非基于比较的排序 本文与大家分享非基于比较的排…

透视未来安全:PIR技术引领数据隐私新时代

1.隐语实现PIR总体介绍 隐语实现的Private Information Retrieval (PIR) 是一种隐私增强技术&#xff0c;它使用户能够在不暴露他们实际查询内容的情况下从远程服务器数据库中检索所需信息。以下是隐语在实现PIR方面的概要说明和技术特点&#xff1a; 基本概念&#xff1a; PI…

移动硬盘无法读取打不开?原因分析与解决方案

一、移动硬盘遭遇困境&#xff1a;无法读取打不开 在数字信息爆炸的时代&#xff0c;移动硬盘成为了我们储存和传输数据的重要工具。然而&#xff0c;当移动硬盘突然无法读取打不开时&#xff0c;我们往往会感到手足无措。插入电脑后&#xff0c;移动硬盘的指示灯可能正常闪烁…

算法系列--动态规划--特殊的状态表示--分析重复子问题

&#x1f495;"轻舟已过万重山!"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–算法系列–动态规划–特殊的状态表示–分析重复子问题 大家好,今天为大家带来的是算法系列--动态规划--特殊的状态表示--分析重复子问题 一.组合总数IV 链接…