我有以下代码
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 ++规范中没有这样的重载。你能解释一下这是为什么吗?
答案 0 :(得分:1)
如Holt所述,在全局范围内定义了一个new
运算符,例如:
void* operator new(size_t, LPCSTR, int);
,并通过范围解析运算符解析。 delete
情况也是如此。