c++中,析构函数在什么时候才会被调用?

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

在该类生成的对象实例声明周期结束时,才被调用
析构函数,在定义类时,进行声明、定义,主要用来释放申祥笑拆请的资源升盯,
如定义了指针变量,并对其进行空间分配( new XX ),就可以在析谨枣构函数中
释放资源。举例入下
class A
{
Class B pt ;

A()

{
pt = new B();

}
~A()
{
if( NULL != pt)

{
delete pt ;
pt = NULL;

}

}
}// end of class A

网友(2):

析构函数是在对象销毁的时候被系统调用的。

另外,你这里说反了,如果去掉foo里面去掉或如&,就会多生成一个临时变量,foo结束后,这个对衫毕启象会被析构,这时候就会数漏多输入一个destructor。如果是原来的A foo(A& anObj)这里的参数是引用,则不会创建一个对象,也就没有所谓析构。所以引用不会多一个destructor

其实main里面里面也有定义两个A对象,在退出main的时候,也会被调用的,你在命令行里运行程序可以看到,程序结束后会有两个destructor输出:

default constructor called
inside foo
copy constructor called
destructor called // main函数里的A析构
destructor called // main函数里的A析构
Press any key to continue

这是我在VC中运行的结果。

网友(3):

因为析构的时候你已经退出了。。。自然就显示不出来了。。。一般在new之后用delete可以看到结果