析构函数是C 中的一个重要概念。它是一种在对象生命周期结束时自动调用的函数,主要用于清除对象分配的资源,如堆内存或打开的文件等。下面我们来详细解析析构函数。
析构函数的名称和格式
析构函数与类同名,前面加一个波浪号(~),没有参数也没有返回值。例如:
class Person {
public:
~Person(); //析构函数
};
如何调用析构函数
析构函数在对象释放时自动调用,无法手动调用。例如:
Person* p = new Person(); //动态分配内存并构造对象
delete p; //释放内存并调用析构函数
析构函数的作用
析构函数主要用于清理对象所分配的资源。例如:
class File {
public:
File(); //构造函数
~File(); //析构函数
void open(const char* filename);
//其他成员函数...
private:
FILE* fp;
};
File::~File() {
fclose(fp); //关闭文件
}
示例代码
下面是一个使用析构函数释放堆内存的示例:
class MyString {
public:
MyString(const char* str = nullptr);
~MyString();
private:
char* m_data;
};
MyString::~MyString() {
if (m_data) delete[] m_data;
}
总结
析构函数是C 中一个非常重要的概念,它的作用是在对象生命周期结束时释放所占用的资源。在使用动态内存分配或打开文件等资源时,一定要记得在析构函数中释放它们。