所以我想重载一个抽象虚拟类的删除.这将在另一个lib中的派生类中调用deleteMe().这是为了防止错误/崩溃提到这里C++混合新/删除libs之间?
当我在我的基类中调用delete from delete时,我得到错误"pure virtual func call".然后我发现它已经叫我的dtor了.我如何重载删除或编写此代码的方式,它不会调用dtor所以我可以写删除obj; 并让它调用obj-> deleteMe()然后调用它自己的删除功能和dtor?
这听起来像你使用操作符删除就像一个应该做任意事情的普通函数.但是,操作符删除只能释放给它的内存作为第一个参数,它是指向该内存区域的指针.
该指针将指向对象所在的内存位置.但是,此时,对象的析构函数已经运行,并且您的对象不再存在.你根本不能调用任何成员函数 - 更不用说虚函数了!
我觉得你的操作删除错误的目的.如果调用delete pointer
,编译器将调用该对象的析构函数,然后调用释放函数以释放已调用的已分配内存operator delete
.
那么,为什么不使用我们之前展示过的解决方案boost::shared_ptr
呢?