您的位置:首页 > 编程语言 > C语言/C++

C++入门之一【类:析构函数)】

2016-06-10 23:08 169 查看
 定义:  当一个对象的生命周期结束时,系统会自动调用一个成员函数,它没有返回值,没有参数,不能重载,这个函

数就是析构函数。是特殊的成员函数。

函数名是类名前面加上一个“~”符号,功能与构造函数相反。

调用析构函数的次序正好与调用构造函数的次序相反。

特征:

 1、在类名加上字符~

2、无参数,无返回值

3、一个类只有一个析构函数(所以不能重载)

4、对象生命周期结束时,系统会自动调用析构函数

5、注意:析构函数体内并不是删除对象,而是做一些清理工作。   

对于对象生命周期结束的几种情况:

①如果在一个函数中定义了一个对象(它是自动局部对象),当这个函数被调用结束时,对象应该释放,在对象释放前

 自动执行析构函数。

②static局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只在main函数结束或调用exit函数结束

程序时,才调用static局部对象的析构函数。

③如果定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全 局对

象的析构函数。

④如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

析构函数的作用

在撤销对象占用的内存空间之前完成一些清理工作,使这部分内存空间可以分配给新的对象使用。

举例:

class A
{
public:
A()
{
p = new char[10];
}

~A()
{
cout<<" ~A() "<<endl;
delete []p;
p=NULL;
}

void display()
{
cout<<"disp"<<endl;
}

private:
char *p;

};

//测试
void main()
{
A a;
a.~A();
a.display();
}


实际上,析构函数除了释放资源的作用外,还可以用来执行“用户希望在最后一次使用对象后的一些操作”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: