重载运算符 new 和运算符 delete 带有三个参数



我有以下一段代码

void* Class1::operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
{
return ::operator new[](nSize,lpszFileName,nLine); 
} 
void Class1::operator delete(void *p, LPCSTR lpszFileName, int nLine)
{ 
::operator delete[] (p,lpszFileName,nLine); 
} 

我不明白::operator new[](nSize,lpszFileName,nLine)delete[] (p,lpszFileName,nLine).有一个全局作用域运算符"::"所以它应该调用C++运算符,但是C++规范中没有这样的重载。你能解释一下为什么会这样吗?

正如Holt所提到的,在全局范围内定义了一个new运算符,例如:

void* operator new(size_t, LPCSTR, int);

并通过范围解析运算符进行解析。delete的情况也是如此。

相关内容

最新更新