注册 登录
编程论坛 C++教室

关于析构函数的调用

jim1024amw 发布于 2008-09-24 18:52, 1620 次点击
今天刚学构造函数和析构函数,但对于析构函数何时调用还是不太懂.请各位兄弟帮帮忙.还有析构函数到底有什么用啊?
10 回复
#2
守鹤2008-09-24 18:59
析构函数是类对象调用结束前,系统会自动调用析构函数。
析构函数 主要是对类对象所占空间的处理,例空间的分配,内存的释放等。
#3
江湖未冷2008-09-24 20:16
释放内存
#4
jim1024amw2008-09-24 20:50
二楼说是"类对象调用结束前" .那是不是只发生在main()函数中,能不能具体一些.谢谢.
#5
一眼的笑意2008-09-25 16:56
对象结束生命期或使用delete时一般会调用析构函数,在派生类中会先调用派生类然后调用基类的
#6
守鹤2008-09-25 19:33
回复 4# jim1024amw 的帖子
不一定发生在main 函数中,只要有类对象的使用,并且该对像调用结束前,就会调用析构函数
#7
bibingyan2008-09-26 19:00
当定义的对象超出作用域的范围或使用了delete删除对象时,都会调用析构函数 进行对象的释放
#8
ciappcia2008-09-26 20:43
对象结束生命期结束的时候
#9
小侠1152008-09-26 20:52
不太懂
#10
zzt_4282008-09-30 10:53
就是对象死亡的时候调用析构函数是为了释放占用的内存,供以后继续使用.
我举几个常见的例子吧:

你定义了一个局部对象,当这个局部对象作用域结束的时候,也就是遇到所在代码块的"}"的时候会调用析构函数.

你使用new 产生一个对象,然后使用delete把它删除的时候,也会调用.

生成临时对象的时候,也会调用.
#11
newyj2008-09-30 20:22
#include<iostream>
using namespace std;

class newcla
{
  public:
     newcla(){cout<<"begin new class newcla!"<<endl;};
     ~newcla(){cout<<"Be over!"<<endl;}
};

int main()
{
  cout<<".............."<<endl;
  {
    newcla var;
  }
  cout<<".............."<<endl;
  return 0;
}
举个简单的例子
1