::称为范围解析运算符。
希望这个例子有帮助:
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* operator new ( std::size_t count ); //(1)
void* operator new[]( std::size_t count ); //(2)
void* operator new ( std::size_t count, const std::nothrow_t& ); //(3)
void* operator new[]( std::size_t count, const std::nothrow_t& ); //(4)
void* operator new ( std::size_t, void* ptr ); //(5)
void* operator new[]( std::size_t, void* ptr ); //(6)
分配函数可以通过两种方式替换/重载:
在全局范围内:
为了调用它,重载分配函数的签名必须在分配位置可见,隐式声明的默认分配函数除外。此分配函数将用于当前程序中具有相应参数的所有分配
在本地范围内:
重载的运算符 new 必须是类的静态公共成员函数。此分配函数将仅用于该特定类的分配。
来源: http ://en.cppreference.com/w/cpp/memory/new/operator_new