使用三个参数重载operator new和operator delete

时间:2018-06-19 09:25:02

标签: c++ oop visual-c++ operator-overloading

我有以下代码

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 ++规范中没有这样的重载。你能解释一下这是为什么吗?

1 个答案:

答案 0 :(得分:1)

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

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

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