发布网友 发布时间:2024-10-10 17:57
共5个回答
热心网友 时间:2024-11-13 19:58
就算是你自定义了析构函数,默认析构函数同样会存在,而且会执行。当类中有类对象成员时,首先调用的是自定义的析构函数,然后这个类对象成员资源的释放,就是由默认析构函数来释放的。因为指针不属于对象成员,因此默认析构函数不会管他,需手动释放指针的资源(主要是new)例class B{public:~B(){cout<<"B";}}; class A{public: B mb; ~A(){}}; void main(){ A ma;} 在类A中的析构函数什么也没做,也就是没有释放类成员mb的资源,但类B的析构函数仍执行了,这个类对象成员mb的资源释放,就是使用的类A的默认析构函数进行的。热心网友 时间:2024-11-13 19:57
当然能了,你知道把要释放资源的语句, 放到析构函数里,那么当这个单位结束自己的寿命周期.比如:热心网友 时间:2024-11-13 19:57
默认的析构函数什么都不做的,如果要释放内存 需要你自己加上热心网友 时间:2024-11-13 20:06
析构函数只是在对象被释放前“自动调用”的函数,它本身没有释放内存的功能。热心网友 时间:2024-11-13 20:05
系统自带的类的析构函数已经都做好了,你自己写的类的析构函数默认是空的,如果在类中开辟了一些堆空间来使用的话,最好检查你使用之后有没有释放掉,如果没有释放就要在析构函数中释放掉,不然容易造成内存浪费。