我可以使用不同的参数覆盖全局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中发现了这个“缺陷”(至少在我看来).如果语言允许新的覆盖,则必须允许删除覆盖,否则它将变得无用.所以我想知道是否有办法解决这个问题,而不是这个好主意.