“::运算符新”有什么作用
what does `::operator new` do?
我正在查看一些重载new/delete的示例代码
我有以下内容
// manage memory for instances
void * roun_class:: operator new(std::size_t s)
{
void * result(::operator new(s));
return result;
}
这是第一次,我正在查看::运算符。我在谷歌/SO中找不到任何关于它的信息。所以,有人可以解释为什么我们有::并且前面没有类。这个有什么特别之处::运算符??,
仅供参考,我已经看过以下内容::operator() 有什么作用?虽然没有真正回答我的问题
前导::
通常表示全局命名空间(即没有命名空间),所以我猜有必要::operator new
表明我们正在谈论内置的new,而不是递归调用类的new
。
::operator new(std::size_t)
是全局命名空间中的new(std::size_t)
运算符(即:默认内存分配函数之一)。
它在这里被称为::operator new
,因为如果不是这样,这个operator new
只会再次调用自己,这将导致堆栈溢出。
:: 称为范围解析运算符。
希望这个例子对你有所帮助:
int count = 0;
int main(void) {
int count = 0;
::count = 1; // set global count to 1
count = 2; // set local count to 2
return 0;
}
请参阅C++参考资料:http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage%2Fref%2Fclrc05cplr175.htm
就新的超载而言。这是我给你的。
void* 运算符 new ( 标准::size_t 计数); (1) void* 运算符 new[]( std::size_t count );(2) void* 运算符 new ( std::size_t count, const std::nothrow_t& ); (3) void* 运算符 new[]( std::size_t count, const std::nothrow_t& ); (4) void* 运算符 new ( std::size_t, void* PTR ); (5) void* 运算符 new[]( std::size_t, void* ptr ); (6)
可以通过两种方式替换/重载分配函数:
在全球范围内:
为了调用它,重载的签名 分配函数必须在分配位置可见, 隐式声明的默认分配函数除外。这 分配函数将用于所有分配 当前程序中的相应参数
在本地范围内:
重载运算符 new 必须是静态公共成员函数 类。此分配函数将仅用于分配 该特定类的。
苏尔斯 : http://en.cppreference.com/w/cpp/memory/new/operator_new
它在"global"命名空间中调用新运算符。 这是内置于C++编译器中的那个。
- archive_read_support_filter_all() 有什么作用?
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- DrawShadow 中的 Elevation 究竟有什么作用?
- 测试"stream >> char"有什么作用?
- "uFlags &= ~CHN_PANNING"命令有什么作用?
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- int** a = new int*[n]();这个函数有什么作用?
- C++ 此函数调用之前的(void)有什么作用?
- i+=(i&-i) 有什么作用?它是便携式的吗?
- 这个size_t在 lambda 中有什么作用?C++代码
- 数组下标运算符 ([ ]) 对数组有什么作用?
- 结构之外的节点 * head 有什么作用?
- 重载括号运算符有什么作用?
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- std::make_unique_for_overwrite() 对 std::make_unique() 有什么作用?
- 运算符 delete[] 有什么作用?
- 下面的代码有什么作用?c++
- 这个陈述'p = I.ptr<uchar>(i);有什么作用?
- 这个嵌套的名称空间定义有什么作用