重载运算符 new 和运算符 delete 带有三个参数
overloaded operator new and operator delete with three arguments
我有以下一段代码
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
的情况也是如此。
相关文章:
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 如何知道n!是否可以表示为三个连续数字的乘法?
- 我有三个 getline,但是一旦编译,输入就太多了
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 有没有更好的方法对C++中的三个整数进行排序?
- 如何检查第三个 API 是否在 Linux 中为 c/c++ 程序创建了一个新线程?
- 为什么 getch 在按下函数或箭头键时返回三个值?
- 使用三个数字比较器进行排序
- 我想在C++代码中比较这三个术语
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 我该如何编码,使计算机知道两个名称条目和三个名称条目之间的区别
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 如何通过通用引用或std::forward将这三个c++模板函数合并为一个
- 首先处理第二个和第三个堆与第一个和第二个堆之间的逻辑差异
- 重载运算符 new 和运算符 delete 带有三个参数
- 空白或不执行任何操作的三元运算符的第二个或第三个参数
- 为什么在条件运算符(?:)中,第二个和第三个操作数必须具有相同的类型
- 我可以在三元运算符的第二个或第三个操作数中使用多个指令吗?