情景:
在对象内存在动态分配的内存,需要将对象所有数据成员清理并重新赋值,又不让对象被释放。
尝试:
在清理时调用析构函数(delete this)。
结果:
编译不通过,因为调用析构函数后,该对象即生命终止,再给其重新赋值,则非法访问。
解决:
将析构函数中的回收数据成员的动态分配方法,写入专门用于清理的成员函数中,析构函数改写成调用该函数回收内存。在需要重新赋值的函数中,可以在调用该清理函数后,重新赋值。
特点:
能清理对象数据,但对象不会生命周期终止。
在对象内存在动态分配的内存,需要将对象所有数据成员清理并重新赋值,又不让对象被释放。
在清理时调用析构函数(delete this)。
编译不通过,因为调用析构函数后,该对象即生命终止,再给其重新赋值,则非法访问。
将析构函数中的回收数据成员的动态分配方法,写入专门用于清理的成员函数中,析构函数改写成调用该函数回收内存。在需要重新赋值的函数中,可以在调用该清理函数后,重新赋值。
能清理对象数据,但对象不会生命周期终止。