析构函数(destructor)与构造函数的作用相反,用来完成对象被撤销前的扫尾清理工作。析构函数是在撤销对象前由系统自动调用的,析构函数执行后,系统回收该对象的存储空间,该对象的生命周期也就结束了。[1]
析构函数是类中的一种特殊的函数,它具有以下特性:析构函数名是在类名前加“~”构成(该符号曾作为按位求反的单目运算符);析构函数不指定返回类型;析构函数没有形参,因此也不能被重载定义,即一个类只能有一个析构函数;在撤销一个对象时系统将自动调用析构函数,该对象作为析构函数的当前对象;如果没有显式定义析构函数,编译器将生成一个公有的析构函数,称为缺省析构函数,函数体为空。[1]
函数介绍
与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。以C++语言为例:析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。 函数定义