是这么说的,但是如果自己动态分配了内存就要在该函数代码块自己去释放。析构函数只负责释放静态内存
比如
class A
{
public A(){p = new int[10]}
private:
int *p;
};
如果采用默认构造函数A类对象销毁之后p本身占用的内存是没了,但是通过p分配在堆上的int[10]还是在的。也就是说把p这个指针销毁了,但是它指向内容还在,所以要在析构函数delete[]p
java虚拟机会回收那些占用内存但是没有引用指向它的对象。不过不是即时的。其实JAVA可以加finalize(),这个方法会在对象销毁前自动调用
用途很多的
形式:
a{
a(){}
~a(){}
}
~a(){}这个是析构函数
它是为了释放构造函数a(){}所创建的内存。
例如你调用了new
就要用delete去删除你调用的内存空间的。不然会造成内存泄漏,在小的程序里看不出来,大的话就会悲剧