设为首页 加入收藏

TOP

13.1.5 析构函数
2013-10-07 01:14:18 来源: 作者: 【 】 浏览:75
Tags:13.1.5 函数

13.1.5  析构函数

析构函数也是一种特殊的成员函数,用来释放类中申请的内存或在退出前设置某些变量的值。当类对象离开它所在的作用范围,或者释放一个指向类对象的指针时,系统就会自动调用析构函数。析构函数不是必须的,主要用于释放互斥锁,或者释放内存,或者类对象不再使用时需要执行的特殊操作。

析构函数的函数名和类名相同,并且在前面加上一个"~"。该函数没有任何参数,不返回任何值,声明格式如下:

  1. ~<函数名>(); 

在代码实现时,析构函数的定义方式与普通成员函数相同。

注意:析构函数可能会在程序的许多退出点被调用,所以尽量不要将它定义为内联函数,否则会导致程序代码的膨胀,降低程序执行效率。

【示例13-10】 演示析构函数的使用和定义方式。

  1. class exam  
  2. {  
  3. private:  
  4.     char *str;  
  5. public:  
  6.     exam ();        //构造函数  
  7.     ~ exam ();      //析构函数  
  8.     void show();  
  9. };  
  10. exam:: exam ()  
  11. {  
  12.     str=new char[10];  
  13.     str[0]='h';  
  14.     str[1]='i';  
  15.     str[2]='\0';  
  16. }  
  17. void exam::show()  
  18. {  
  19.     cout<<str<<endl;  
  20. }  
  21. exam::~ exam ()  
  22. {  
  23.     cout<<"析构函数!"<<endl;  
  24.     delete[] str;  
  25. }  
  26. int main()  
  27. {  
  28.     exam s1;  
  29.     s1.show();  
  30.     cout<<"退出"<<endl;  
  31.     return 0;  

程序运行结果如下:

  1. hi  
  2. 退出  
  3. 析构函数! 

分析:程序中声明了一个构造函数和一个析构函数,在构造函数内为属性str申请了10个字节的内存,并初始化。在退出程序前自动调用了类的析构函数,释放了为str申请的内存。

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.1.9 指向类成员的指针 下一篇13.1.3 类的方法

评论

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