我可以使用不同的参数覆盖全局operator new,例如我可以:
void* operator new (std::size_t size) throw (std::bad_alloc); void* operator new (std::size_t size,int num) throw (std::bad_alloc);
可以单独调用
int* p1 = new int; // calls new(size_t) int* p2 = new(5) int; // calls new(size_t,int)
由于每个都可能使用一些不同的分配方案,我需要为每个分配方案单独的delete()函数.但是,delete(void *)不能以相同的方式重载! delete(void *)是唯一有效的签名.那么如何处理上述情况呢?
附:我并不是说这是一个好主意.这种事情发生在我身上,所以我在c中发现了这个“缺陷”(至少在我看来).如果语言允许新的覆盖,则必须允许删除覆盖,否则它将变得无用.所以我想知道是否有办法解决这个问题,而不是这个好主意.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。