C++:析构函数

在销毁对象时,系统也会自动调用一个函数,它就是析构函数。析构函数没有返回值,它的函数名是在类名前加一个 ~ 符号。析构函数没有参数,不能被重载,这也就意味着析构函数只有一个,若没有写虚构函数,则会有一个默认的析构函数。

例如:

cpp 复制代码
#include<iostream>
using namespace std;

class AA
{
public:
	int* p;
public:
	AA()
	{
		p = new int(100);
		cout << "AA" << endl;
	}
	~AA()
	{
		delete p;
		cout << "~AA" << endl;
	}
public:
	void Show()
	{
		cout << *p << endl;
	}

};

int main()
{
	int* pp = NULL;
	{
		AA aa;
		aa.Show();
		pp = aa.p;
	}

	cout << *pp << endl;//若无析构函数*pp=100

	return 0;
}
相关推荐
fie888912 小时前
基于 MATLAB 的前景背景分割系统
开发语言·matlab
郝学胜-神的一滴12 小时前
Qt 入门 01-02: 开发环境搭建指南
开发语言·c++·qt·客户端
Languorous.12 小时前
C++数据结构高阶|布隆过滤器(Bloom Filter)深度解析:从原理到手写实现,面试高频考点全覆盖
数据结构·c++·面试
山河木马13 小时前
Emscripten 从 C/C++ 调用 JavaScript
前端·javascript·c++
TANGLONG22213 小时前
【C++】继承详解——基类/派生类、作用域、默认函数、菱形继承(超详细)
java·c语言·c++·经验分享·笔记·ajax
小侯不躺平.13 小时前
C++ Boost库【2】 --stringalgo字符串算法
linux·c++·算法
铅笔小新z13 小时前
【C语言】数据类型和变量
c语言·开发语言
code_whiter13 小时前
C++11(stack和queue)
开发语言·c++
最后一支迷迭香13 小时前
苹果的MacOS系统适合做Java开发吗
java·开发语言·macos
m0_7390300013 小时前
[特殊字符] Java 高频面试题汇总
java·开发语言·面试