cfnest2017赛程:请问C++中的析构函数到底有什么作用?如何使用?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 01:16:50
如题,谢谢

构造函数(constructor)是一种特殊的成员函数,它提供了对成员变量进行初始化的方法,使得在声明时能自动地初始化对象.因为当程序创建一个对象时,系统会自动调用该对象所属类的构造函数.
析构函数(destructor)也是一种成员函数,但它的作用与构造函数相反,用来在系统释放对象前做一些清理工作,如利用delete运算符释放临时分配的内存,清零某些内存单元等.当一个对象生存期结束时,系统会自动调用该对象所属类的析构函数;
构造函数的名称与类名相同,而析构函数的名称必须在类名前加上"~"符号;注意,构造函数和析构函数不能指定任何返回值类型,包括void返回类型;
例如:
#include<iostream.h>
class Time
{
private :
int hour;
int minute;
int second;
public :
Time(int,int,int); //构造函数
~Time(); //析构函数
};
Time::Time(int b,int m,int a) //构造函数的实现
{
hour=h;
minute=m;
second=s;
cout<<"The constructor be called:"<<hour<<';'<<minute<<';'<<second<<endl;
}

Time::~Time() //析构函数的实现
{
cout<<"The destructor be called:"<<hour<<';'<<minute<<';'<<second<<endl;
}

void main()
{
Time t1(10,35,55);
Time t2(16,53,9);
}

个人理解:
析构函数顾名思义就是解析掉构造函数,因为一个类创建的时候你定义了一个构造函数来构造,此时系统会分配内存空间给这个类存放初始数据,当你用完这些数据后不在需要了,函数就会自动掉用析构函数,把分配的空间收回!

楼主说得比较正确,我补充一下,不是“当你用完这些数据后不在需要了”,而是“当程序运行到这些数据的生存周期结束时”。