设为首页 加入收藏

TOP

1.2.3 类的构造函数和析构函数
2013-10-07 01:08:17 来源: 作者: 【 】 浏览:72
Tags:1.2.3 构造 函数

1.2.3  类的构造函数和析构函数

构造函数和析构函数是在类中定义的两种特殊的成员函数。构造函数的功能是在创建对象时,使用给定的值来将对象初始化。析构函数的功能是用来从内存中释放一个对象的,在删除对象前,用它来做一些清理工作,它与构造函数的功能正好相反。

下面举一个例子来说明构造函数和析构函数的特点。

【例1.1】演示构造函数和析构函数的特点(Ex1_01):

  1. #include <iostream.h>  
  2. class CPoint  
  3. {  
  4. private:  
  5. int X, Y;  
  6. public:  
  7. CPoint(int x, int y);     // 构造函数  
  8. CPoint();             // 无参构造函数  
  9. ~CPoint();            // 析构函数  
  10. };  
  11. CPoint::CPoint(int x, int y)   // 构造函数  
  12. {  
  13. X=x; Y=y;  
  14. }  
  15. CPoint::CPoint()          // 无参构造函数  
  16. {  
  17. X=0; Y=0;  
  18. }  
  19. CPoint::~CPoint()         // 析构函数  
  20. {  
  21. cout<<X<<","<<Y<<" 析构函数被调用"<<endl;   
  22. }  
  23. void main()  
  24. {  
  25. CPoint P1(6, 4);  
  26. CPoint P2;  

运行结果为:

  1. 0,0 析构函数被调用  
  2. 6,4 析构函数被调用 

CPoint类内说明的成员函数CPoint()是构造函数,而~CPoint()是析构函数。

(1) 构造函数的特点如下:

构造函数是成员函数,该函数的名字与类名相同。

构造函数是一个特殊的函数,该函数无数据类型,它没有返回值。该函数可以有一个参数,也可以有多个参数。

构造函数可以重载,即可以定义多个参数个数不同的函数。

程序中不能直接调用构造函数,在创建实例时系统自动调用构造函数。

当类没有构造函数时,编译系统自动生成函数体为空的一个默认的构造函数,其形式如下:

  1. CPoint()            // 默认的构造函数  
  2. {  

构造函数访问权限总是public。如果是private,则表示该类不能被实例化,这通常用在只含有静态成员的类中。

(2) 析构函数的特点如下:

析构函数是成员函数,函数体可写在类体内,也可写在类体外。

析构函数也是一个特殊的函数,它的名字同类名,并在前面加"~"字符,用来与构造函数加以区别。析构函数不能有参数,无数据类型。

一个类中只可能定义一个析构函数。

当撤销对象时,析构函数自动被调用。撤销对象顺序与创建时正好相反。

析构函数不能被继承和重载。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.3.2 派生类与基类的构造函数 下一篇1.1.2 面向对象编程方法的基本特征

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: