标签:
1.什么是析构函数
析构函数(destructor)也是一种成员函数,但它的作用与构造函数相反,用来在系统释放对象前做一些清理工作,如利用delete运算符释放临时分配的内存,清零某些内存单元等.当一个对象生存期结束时,系统会自动调用该对象所属类的析构函数;
构造函数的名称与类名相同,而析构函数的名称必须在类名前加上"~"符号;注意,构造函数和析构函数不能指定任何返回值类型,包括void返回类型.
2.何时调用析构函数
撤销类对象时会自动调用析构函数( 变量在超出作用域时应该自动撤销), 动态分配的对象只有在指向该对象的指针被删除时才撤销.
#include <iostream> using namespace std; class Test { public: Test() { } ~Test() { cout<<"This is a ~Test() " <<endl; } }; int main() { Test A; Test *ptr = new Test(); delete ptr; return 0; }
如果类需要析构函数, 则它也需要赋值操作符和复制构造函数, 这是一个有用的经验法则.
4.合成析构函数
与复制构造函数或赋值操作符不同, 编译器总会为我们合成一个析构函数. 合成析构函数按对象创建时的逆序撤销每个非static成员, 因此, 它按成员在类中声明次序的逆序撤销成员.对于类类型的每个成员, 合成析构函数调用该成员的析构函数来撤销对象.
5.虚析构函数与纯虚析构函数,这里直接发个链接吧, 是别人写的博文, 讲挺好的 点击打开链接.
标签:
原文地址:http://blog.csdn.net/nizhannizhan/article/details/46401749