情景:
在对象内存在动态分配的内存,需要将对象所有数据成员清理并重新赋值,又不让对象被释放。
尝试:
在清理时调用析构函数(delete this)。
结果:
编译不通过,因为调用析构函数后,该对象即生命终止,再给其重新赋值,则非法访问。
解决:
将析构函数中的回收数据成员的动态分配方法,写入专门用于清理的成员函数中,析构函数改写成调用该函数回收内存。在需要重新赋值的函数中,可以在调用该清理函数后,重新赋值。
特点:
能清理对象数据,但对象不会生命周期终止。
本文讨论了如何在对象内部处理动态分配的内存,避免在清理时直接调用析构函数导致对象终止。提出将内存清理操作分离到专门的成员函数中,确保对象可重新赋值同时保持数据的完整性。
在对象内存在动态分配的内存,需要将对象所有数据成员清理并重新赋值,又不让对象被释放。
在清理时调用析构函数(delete this)。
编译不通过,因为调用析构函数后,该对象即生命终止,再给其重新赋值,则非法访问。
将析构函数中的回收数据成员的动态分配方法,写入专门用于清理的成员函数中,析构函数改写成调用该函数回收内存。在需要重新赋值的函数中,可以在调用该清理函数后,重新赋值。
能清理对象数据,但对象不会生命周期终止。
802
685
1912
1359

被折叠的 条评论
为什么被折叠?