我正在将一些旧代码从 C 移植到 C++。旧代码使用类似对象的语义,并且在某一时刻将对象销毁与释放现在未使用的内存分开,两者之间发生了一些事情:
Object_Destructor(Object *me) { free(me->member1), free(me->member2) }
ObjectManager_FreeObject(ObjectManager *me, Object *obj) { free(obj) }
在 C++ 中使用标准析构函数 ( ~Object
) 和随后的调用是否可以实现上述功能delete obj
?或者,正如我担心的那样,这样做会调用析构函数两次?
在特定情况下,operator delete
ofObject
也会被覆盖。我在其他地方读到的定义(“当使用运算符删除,并且对象有一个析构函数时,总是调用析构函数)在重写运算符的情况下是否正确?