C++的析构函数
来源:华未云
更新:2025-02-14 17:27:05|关注1 人
析构函数(Destructor)
析构函数也是一种特殊的成员函数,它会在对象销毁时自动调用,用于执行一些清理工作,如释放对象占用的资源。析构函数的名称是在类名前加上波浪号(~
),并且没有返回类型和参数。
特点:
自动调用:当对象生命周期结束时,析构函数会自动被调用。这包括对象离开其作用域(如函数返回时局部变量被销毁)、对象被显式删除(使用delete
操作符)或程序结束时全局/静态对象被销毁。
清理资源:析构函数用于释放对象在生命周期中分配的资源,如动态内存、文件句柄、网络连接等。
无返回值和参数:析构函数没有返回类型和参数。
每个类只有一个:每个类只能有一个析构函数,不能重载。
示例代码
#include <iostream>
using namespace std;
class MyClass {
private:
int* ptr;
public:
// 默认构造函数
MyClass() {
cout << "默认构造函数被调用" << endl;
ptr = new int(10); // 分配动态内存
}
// 参数化构造函数
MyClass(int value) {
cout << "参数化构造函数被调用" << endl;
ptr = new int(value); // 根据参数分配动态内存
}
// 拷贝构造函数
MyClass(const MyClass& other) {
cout << "拷贝构造函数被调用" << endl;
ptr = new int(*(other.ptr)); // 深拷贝
}
// 析构函数
~MyClass() {
cout << "析构函数被调用" << endl;
delete ptr; // 释放动态内存
}
// 显示值的方法(用于测试)
void display() {
cout << "值: " << *ptr << endl;
}
};
int main() {
MyClass obj1; // 调用默认构造函数
obj1.display();
MyClass obj2(20); // 调用参数化构造函数
obj2.display();
MyClass obj3 = obj2; // 调用拷贝构造函数
obj3.display();
// 当main函数结束时,所有对象都会被销毁,并调用它们的析构函数
return 0;
}
声明:以上是华未云整理的全部内容。本站资源来自及互联网公开收集,仅限学习交流使用,请遵循相关法律法规,如有侵权争议、不妥之处请联系本站删除处理!