1.2.3 类的构造函数和析构函数
构造函数和析构函数是在类中定义的两种特殊的成员函数。构造函数的功能是在创建对象时,使用给定的值来将对象初始化。析构函数的功能是用来从内存中释放一个对象的,在删除对象前,用它来做一些清理工作,它与构造函数的功能正好相反。
下面举一个例子来说明构造函数和析构函数的特点。
【例1.1】演示构造函数和析构函数的特点(Ex1_01):
- #include <iostream.h>
- class CPoint
- {
- private:
- int X, Y;
- public:
- CPoint(int x, int y);
- CPoint();
- ~CPoint();
- };
- CPoint::CPoint(int x, int y)
- {
- X=x; Y=y;
- }
- CPoint::CPoint()
- {
- X=0; Y=0;
- }
- CPoint::~CPoint()
- {
- cout<<X<<","<<Y<<" 析构函数被调用"<<endl;
- }
- void main()
- {
- CPoint P1(6, 4);
- CPoint P2;
- }
运行结果为:
- 0,0 析构函数被调用
- 6,4 析构函数被调用
CPoint类内说明的成员函数CPoint()是构造函数,而~CPoint()是析构函数。
(1) 构造函数的特点如下:
构造函数是成员函数,该函数的名字与类名相同。
构造函数是一个特殊的函数,该函数无数据类型,它没有返回值。该函数可以有一个参数,也可以有多个参数。
构造函数可以重载,即可以定义多个参数个数不同的函数。
程序中不能直接调用构造函数,在创建实例时系统自动调用构造函数。
当类没有构造函数时,编译系统自动生成函数体为空的一个默认的构造函数,其形式如下:
- CPoint()
- {
- }
构造函数访问权限总是public。如果是private,则表示该类不能被实例化,这通常用在只含有静态成员的类中。
(2) 析构函数的特点如下:
析构函数是成员函数,函数体可写在类体内,也可写在类体外。
析构函数也是一个特殊的函数,它的名字同类名,并在前面加"~"字符,用来与构造函数加以区别。析构函数不能有参数,无数据类型。
一个类中只可能定义一个析构函数。
当撤销对象时,析构函数自动被调用。撤销对象顺序与创建时正好相反。
析构函数不能被继承和重载。
【责任编辑:
云霞 TEL:(010)68476606】