一文带你学习C++析构函数
什么是析构函数
析构函数是C++中的一种特殊函数,在对象被销毁时自动执行,用于清理对象所占用的内存和资源。
析构函数的特点
- 析构函数没有参数和返回值
- 析构函数名前需加波浪线( ~)以区分于构造函数
- 析构函数声明在类中,实现在类外
- 自动调用,不可显式调用
析构函数的语法
~ClassName(){
//析构函数体
}
示例一:在析构函数中释放内存
class MyClass{
public:
MyClass(int size){
data = new int[size];
len = size;
}
~MyClass(){
delete [] data;
}
private:
int *data;
int len;
};
在构造函数中,为对象的data成员动态分配了一块内存空间,而在析构函数中释放这块内存,防止内存泄漏。
示例二:在析构函数中释放文件句柄
class FileHandler{
public:
FileHandler(string filename){
file.open(filename);
}
~FileHandler(){
file.close();
}
private:
fstream file;
};
在构造函数中,打开了一个文件,并将其绑定到对象的file成员上,而在析构函数中关闭该文件句柄,防止文件资源泄漏。
注意事项
- 动态分配的内存在析构函数中需要手动释放
- 对象销毁时,析构函数会被自动调用,程序员无法主动调用
- 析构函数的存在只有在对象被销毁时才有实际作用
- 若类中没有定义析构函数,C++会默认生成一个空的析构函数
总结
析构函数是一个十分重要的函数,能够在对象被销毁时自动清理所占用的内存和资源,防止出现内存泄漏和资源泄漏的问题。同时,我们应该注意在析构函数中要正确处理动态分配的内存和资源,以保证程序的正确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你学习C++析构函数 - Python技术站