什么静态的运营商新意味着什么?如果我把它放在头文件中会发生什么?
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
static对全球而言毫无用处operator new.VS C++编译器很慷慨:void *operator new已经声明为非静态,不能第二次声明为静态,GCC和clang会通知你.
static适用operator new于类对象的重载自定义.static因为操作符new用于分配对象并且this在分配后首先可用,换句话说首先operator new返回this指针,所以这是必需的.
请注意,根据标准
15.5免费商店
类T的任何分配函数都是静态成员(即使未明确声明为static).
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |