我试图实现这个:
namespace Test
{
void* operator new(size_t s)
{
return malloc(s);
}
}
但是 g++ (4.3.1) 说:
void* Test::operator new(size_t)’ may not be declared within a namespace
我做错了什么吗?
如果是,是否有重载要在我的类(class)中使用的 operator new?我不想创建基类并让我的所有类都继承自该基类。
最佳答案
您只能(重新)定义 operator new
作为全局命名空间的成员或类的(隐式静态)成员。
如果您没有公共(public)基类,那么您需要为每个您想要专门实现的类定义operator new
。当然,您可以委托(delegate)给一个通用的全局函数。
关于c++ - 测试::运算符新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568168/