构造函数与析构函数

来源:互联网 发布:连接池 java 编辑:程序博客网 时间:2024/05/01 10:34

概述:

为什么会有构造函数与析构函数?

  一个对象的数据成员反应了该对象内部状态,但在类的声明中,无法初始化这些数据的值,例如:我们在一个类point中声明了两个变量:int x,y;然后我们声明了一个对象 p;这时对象p中的x,y值没有初始化,也就是没有被赋值。如果我们想像声明一个变量一样对对象的数据成员也初始化,那么我们就要用到构造函数了。总而言之构造函数就是可以将类的数据成员进行初始化的函数。

一.构造函数

构造函数是一种特殊的成员函数,对象的创建和成员的初始由它完成。函数名称与类名相同。

格式如下:

<类名>::<类名>

{

 

}

例如:

Class Point

{

         Public :

Int x,y

Public

Point();//构造函数

~Point();

}

Point::Point()//构造函数是实现

{

         X=0;

         Y=0;

}

当我们声明一个对象时

         Point p;

         p.xp.y的值都为0

说明:

1.       它的函数名与类名相同

2.       可以重载

3.       不能指定返回类型

4.       不能显示调用,创建对象时自动调用

.析构函数

析构函数也是一种特殊的成员函数,它的作用是在对象消失时执行一系列的清理任务,例如可以释放内存等。

其格式如下:

<类名>::<类名>

{

 

}

例如:

Class Point

{

         Public :

Int x,y

Public

Point();//构造函数

~Point();

}

Point::Point()//构造函数是实现

{

         X=0;

         Y=0;

}

Point::~point()

{

Cout<<”(“<<x<<”,”<<y<<”)”<<endl;

}

Point p;

p.~point();

这时结果会输出(0,0;

说明:

1.       析构函数与类名相同,在函数名前要加~符号

2.       析构函数没有参数,也不能重载,一个类中只能定义一个析构函数

3.       不能指定返回类型

4.       析构函数自动调用,不需要去显示调用。(如果你在析构函数里面加入了语句,那就要显示去调用了)