c++ - 测试::运算符新

标签 c++

我试图实现这个:

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/

相关文章:

c++ - fmod 返回不一致的值

C++ 重新解释_cast

c++ - 为分数类型重载运算符 < , ==

c++ - 使用一个循环与两个循环

c++ - 两个八进制数直接相加,无需转换为十进制

javascript - 如何访问 JSCValue 对象的属性

c++ - winapi 从函数的地址中获取损坏的名称

c++ - 如果 Outer 类是我的 friend ,那么 Outer::Inner 类也是吗?

c++ - 迭代和修改C++优先级队列

c++ - 从 Map 删除后访问指针