c++中的析构函数是干什么用的?

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:29:11
是不是用来释放内存用的?
java没有析构函数是不是因为java虚拟机有垃圾回收器?

是这么说的,但是如果自己动态分配了内存就要在该函数代码块自己去释放。析构函数只负责释放静态内存
比如
class A
{
public A(){p = new int[10]}

private:
int *p;
};
如果采用默认构造函数A类对象销毁之后p本身占用的内存是没了,但是通过p分配在堆上的int[10]还是在的。也就是说把p这个指针销毁了,但是它指向内容还在,所以要在析构函数delete[]p

java虚拟机会回收那些占用内存但是没有引用指向它的对象。不过不是即时的。其实JAVA可以加finalize(),这个方法会在对象销毁前自动调用

用途很多的