作用很多,主要是重新释放通过构造函数初使对象后的内存,但其实主要知道,1.如果析构函数有内容的话,它将会在程序结束是自动调用这个函数,2.如果有几个对像的话,调用析构函数和构造函数正好相反!3.析构函数会有隐藏调用和像通过对像调用两种形式,这点很容易忘啊!
构造函数(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);
}
析构函数(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);
}