当前位置:  开发笔记 > 编程语言 > 正文

重载删除,纯虚函数调用

如何解决《重载删除,纯虚函数调用》经验,为你挑选了1个好方法。

所以我想重载一个抽象虚拟类的删除.这将在另一个lib中的派生类中调用deleteMe().这是为了防止错误/崩溃提到这里C++混合新/删除libs之间?

当我在我的基类中调用delete from delete时,我得到错误"pure virtual func call".然后我发现它已经叫我的dtor了.我如何重载删除或编写此代码的方式,它不会调用dtor所以我可以写删除obj; 并让它调用obj-> deleteMe()然后调用它自己的删除功能和dtor?



1> Johannes Sch..:

这听起来像你使用操作符删除就像一个应该做任意事情的普通函数.但是,操作符删除只能释放给它的内存作为第一个参数,它是指向该内存区域的指针.

该指针将指向对象所在的内存位置.但是,此时,对象的析构函数已经运行,并且您的对象不再存在.你根本不能调用任何成员函数 - 更不用说虚函数了!

我觉得你的操作删除错误的目的.如果调用delete pointer,编译器将调用该对象的析构函数,然后调用释放函数以释放已调用的已分配内存operator delete.

那么,为什么不使用我们之前展示过的解决方案boost::shared_ptr呢?

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有