标签:c operator-keyword new-operator delete-operator
我知道new和delete是关键字.
int obj = new int;
delete obj;
int* arr = new int[1024];
delete[] arr;
<新>标头是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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。