析构函数什么时候调用啊

2024年11月28日 17:52
有5个网友回答
网友(1):

调用时间:

1、对象生命周期结束,被销毁时;

2、delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时;

3、对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。

C++当中的析构函数格式如下:

如以下定义是合法的:

当程序中没有析构函数时,系统会自动生成以下析构函数:

<类名>::~<类名>(){},即不执行任何操作。

下面通过一个例子来说明一下析构函数的作用:

最后输出:析构函数被调用。

cin.get() 表示从键盘读入一个字符,为了让我们能够看得清楚结果。当然,析构函数也可以显式的调用,如 (*t).~T(); 也是合法的。

网友(2):

在这个对象的作用域最后..

比如你在main里面声明了一个类A..那么~A()会在main结束时调用..
如果在自定义的函数f()里面声明了一个A 函数f结束的时候就会调用~A()

或者你delete 指向A的指针..
或者显式的调用析构函数

网友(3):

简单地说:析构函数是为你的类创建的对象处理后事用的,所以它的调用时机就类创建出来的对象的生命周期结束的时候。

举个例子:
class clsA
{
public:
clsA(){ }; // 构造函数
~clsA(){ }; // 析构函数
}

void main()
{
clsA a; // 上述构造函数被调用;
return; // 在这条语句执行之前,析构函数被调用,因为对象a死到临头了
}

网友(4):

析构函数对象生命周期结束,被销毁时调用。析构函数与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后”的工作,例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存。

网友(5):

这么简单还用问?如果这些变量在堆栈中,一旦出了范围,析构函数将被调用,自动堆变量,你需要调用delete方法来释放资源此功能是释放资源退栈的过程或作业系统