百度站长工具官网,个人网站上线流程,模板网站的坏处,wordpress 文章列表只显示标题目录
一、什么是析构函数#xff1a;
二、析构函数的特性#xff1a; 一、什么是析构函数#xff1a; C中的析构函数非常简单#xff0c;它的功能无非是帮助我们自动归还堆区的空间给操作系统。当我们使用内存开辟函数#xff08;如malloc()、realloc()#xff09;等
二、析构函数的特性 一、什么是析构函数 C中的析构函数非常简单它的功能无非是帮助我们自动归还堆区的空间给操作系统。当我们使用内存开辟函数如malloc()、realloc()等如果忘记使用free()函数归还所开辟的空间在有些时候就可能造成内存泄漏比如调用一个函数去开辟空间结果没有将空间释放出了函数之后指向所开辟空间的指针找不到了这块空间也就找不到了引发了内存泄漏。 所以为了避免这种情况C中提供了析构函数同样我们如果不创建编译器会自动生成当对象销毁时编译器会自动效用该函数完成对象中资源清理的工作来帮助我们归还所动态开辟的空间。
二、析构函数的特性
1、析构函数完成对象中资源清理的工作并不是销毁对象。
2、析构函数是在类名前面加上字符“~”。
3、析构函数无参数、无返回值、无返回值类型。
4、一个类只能有一个析构函数若未定义则编译器会自动生成一个析构函数。
5、对象生命周期结束后C编译器系统自动调用析构函数。
6、析构函数不构成函数重载。
//析构函数
class Date
{
public:Date(int year 1970, int month 1, int day 1){_year year, _month month, _day day;}void Print(){printf(%d/%d/%d\n, _year, _month, _day);}~Date(){cout ~Date() endl;}private:int _year;int _month;int _day;
};int main()
{Date d;d.Print();//打印结果为1970/1/1return 0;
} 析构函数的功能是清理资源日期类里面其实没有资源需要清理一般自定义类型的析构函数比如栈里面有动态开辟的资源需要清理。析构函数特点是后定义的对象先析构对于内置类型成员编译器不会处理自定义类型成员会调用这个成员的析构函数。