c++析构函数

发布时间:2024年01月11日

析构函数的简述?

1. 析构函数和构造函数类似,是c++规定当对象的生命周期结束时,默认你会调用析构函数。

?2. 同理,当我们不写析构函数的时候编译器会自动生成一个空实现的析构函数

?3. 析构函数只能编译器自己调用,我们不能调用。(无论是不是自己写的)

? ??

析构函数的作用?

我们在析构函数中主要是在对象的生命周期结束时,释放一些内存(例如堆区的内存)。?当然,如果没有内存需要释放,那就可以写一个空实现的,或者不需要写(编译器会加一个)。

析构函数语法?

class Human {
public:
	Human();
	~Human();
private:
	int age;
	char* name;
};

Human::Human() {
	age = 18;
	name = new char;
}

Human::~Human() {
	delete name;
}

注意:? 1. 析构函数不能有参数,也就说明析构函数只能有一个不能进行函数重载?

? ? ? ? ? 2. 析构函数是在默认构造函数前面加一个~?

? ? ? ? ? 3. 代码中类内有两个成员变量? --? age 和 name,age是局部变量其生命周期由编译器管理,而name是一个指针,我们为它在堆区开辟了内存,所以需要在对象生命周期结束的时候,释放掉。(这就在析构函数中实现了)?

? ? ? ? ?4. 对于上面的代码,如果只有age吗,那析构函数就可以写成一个空实现?

析构函数调用时机?

class Human {
public:
	Human();
	~Human();
private:
	int age;
	char* name;
};

Human::Human() {
	age = 18;
	name = new char;
	cout << __FUNCTION__ << endl;
}

Human::~Human() {
	delete name;
	cout << __FUNCTION__ << endl;
}

void test() {
	Human man;
}

int main(void) {

	test();

	system("pause");

	return 0;
}

?1. 在创建对象的时候,会调用构造函数,对象声明周期结束,调用析构函数-- 使用代码来验证。?

?2. __FUNCTION__是一个宏,使用在函数中表示,此函数的名字。?

?3. 对象也是变量,代码中man对象的生命周期为定义-->test函数结束。

结果:??

?可以看出,先调用构造创建,再调用析构结束

文章来源:https://blog.csdn.net/weixin_68026222/article/details/135539287
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。