其他分享
首页 > 其他分享> > c-什么是“ :: operator new”和“ :: operator delete”?

c-什么是“ :: operator new”和“ :: operator delete”?

作者:互联网

我知道new和delete是关键字.

int obj = new int;
delete obj;

int* arr = new int[1024];
delete[] arr;

&LT新&GT标头是C标准标头的一部分.它有两个运算符(我不确定它们是运算符还是函数):

:: operator new

::运算符删除

这些运算符的用法如下:

#include <new>
using namespace std;

int* buff = (int*)::operator new(1024 * sizeof(int));
::operator delete(buff);

什么是“ :: operator new”和“ ::: operator delete”?它们与new和delete关键字不同吗?

解决方法:

::告诉编译器调用全局命名空间中定义的运算符.
它是全局new和delete运算符的完全限定名称.

请注意,一个可以为replace the global new and delete operators as well as overload class-specific new and delete operators.因此,程序中可以有new和delete运算符的两个版本.具有范围解析运算符的全限定名称告诉编译器您是指运算符的全局版本,而不是特定于类的运算符.

标签:c,operator-keyword,new-operator,delete-operator
来源: https://codeday.me/bug/20191009/1878557.html