什么是静态的操作员新意味着什么

tej*_*jas 1 c++

什么静态的运营商新意味着什么?如果我把它放在头文件中会发生什么?

static void* operator new(size_t size, std::string s)
{
    return 0;
}

int main() 
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码在visual studio 2013上编译

但是gcc给出了一个错误

错误:'void*operator new(size_t)'可能不会声明为静态

static void*operator new(size_t size)

铿锵声

错误:'operator new'的静态声明遵循非静态声明

static void*operator new(size_t size)

这是c ++中的灰色区域,还是视觉工作室慷慨?

链接到代码:https://www.ideone.com/kZmWgf

S.M*_*.M. 5

static对全球而言毫无用处operator new.VS C++编译器很慷慨:void *operator new已经声明为非静态,不能第二次声明为静态,GCC和clang会通知你.

static适用operator new于类对象的重载自定义.static因为操作符new用于分配对象并且this在分配后首先可用,换句话说首先operator new返回this指针,所以这是必需的.

请注意,根据标准

15.5免费商店

类T的任何分配函数都是静态成员(即使未明确声明为static).