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