码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 复制控制 之析构函数

时间:2015-06-07 17:32:33      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 1.什么是析构函数

   析构函数(destructor)也是一种成员函数,但它的作用与构造函数相反,用来在系统释放对象前做一些清理工作,如利用delete运算符释放临时分配的内存,清零某些内存单元等.当一个对象生存期结束时,系统会自动调用该对象所属类的析构函数; 

构造函数的名称与类名相同,而析构函数的名称必须在类名前加上"~"符号;注意,构造函数和析构函数不能指定任何返回值类型,包括void返回类型.

 2.何时调用析构函数

撤销类对象时会自动调用析构函数( 变量在超出作用域时应该自动撤销),  动态分配的对象只有在指向该对象的指针被删除时才撤销.

#include <iostream>
using namespace std;
class Test
{
  public:
   Test() { }

   ~Test()
   {
     cout<<"This is a ~Test() " <<endl;
   }
   
};  

int main()
{
  Test A;
  Test *ptr = new Test(); 
  delete ptr;
  return 0;
} 
技术分享
该程序调用了两次析构函数, 第一次是在删除ptr时, 第二次是遇到右括号时.


如果类需要析构函数, 则它也需要赋值操作符和复制构造函数, 这是一个有用的经验法则.


4.合成析构函数

  与复制构造函数或赋值操作符不同, 编译器总会为我们合成一个析构函数. 合成析构函数按对象创建时的逆序撤销每个非static成员, 因此, 它按成员在类中声明次序的逆序撤销成员.对于类类型的每个成员, 合成析构函数调用该成员的析构函数来撤销对象.


5.虚析构函数与纯虚析构函数,这里直接发个链接吧, 是别人写的博文, 讲挺好的 点击打开链接.


c++ 复制控制 之析构函数

标签:

原文地址:http://blog.csdn.net/nizhannizhan/article/details/46401749

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!