版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
一个类有且仅有一个析构函数。如果定义类时没写析构函数则编译器生成默认析構函数。如果定义了析构函数则编译器不生成默认析构函数。
析构函数在对象消亡时即自动被调用可以定义析构函数在对象消亡前做善后工作。例如对象如果在生存期间用 new 运算符动态分配了内存,则在各处写 delete 语句以确保程序的每条执行路径都能释放这片内存是比较麻煩的事情有了析构函数,只要在析构函数中调用 delete 语句就能确保对象运行中用 new
运算符分配的空间在对象消亡时被释放。例如下面的程序:
接下来的两次析构函数调用发生在第 16 行delete 语句释放了第 15 行动态分配的数组,那个数组中有两个 CDemo 对象消亡最后两次析构函数调用发生在 main 函数结束时,因第 11 行的局部数组如果有变量定义inta array 中的两个元素消亡而引发
//方法结束时,由系统自动调用析构函数释放对象