c++ - 我们什么时候在 new (::new) 之前使用作用域解析运算符?

标签 c++ c++11 scope-resolution

我遇到了一段代码,其中作用域解析运算符放在 new 之前。我们什么时候使用它。这是什么意思。请问有人能解释一下吗?

最佳答案

::new 是显式全局运算符。这与可能定义的各种类作用域运算符 new 相反。例如,如果我在 myclass 中定义了一个 operator new,然后在同一个类中我想使用全局的,我会说 ::new,而如果我说 new,我会得到我定义的特定于类的函数。

我也可能在通用模板代码中使用 ::new ,我不确定我可能分配什么类型,但想确保我不使用任何特定于类的分配器(例如我可能需要将结果传递给一些将在其上使用全局 ::delete 的 API。

这里有一个包含所有可能运算符的大列表 new 以供引用:http://en.cppreference.com/w/cpp/memory/new/operator_new

关于c++ - 我们什么时候在 new (::new) 之前使用作用域解析运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178893/

相关文章:

c++ - 具有 constexpr 函数的模板作为参数返回

c++ - 为什么 `::` 不像运算符那样被称为 'scope resolution operator'?

c++ - "::"中的 "::tolower"是什么意思?

c++ - std::map 字符串到 boost::thread_specific_ptr

c++ - 为什么范围解析不适用于重写变量?

c++ - 处理使用ffmpeg解码的音频包

c++ - 在运行时有条件地定义 3 个类中的哪一个将在其余 C++ 代码中使用

c++ - 如何检查函数是否存在

c++ - 从 Slot qt 创建时 MessageDialog 卡住

algorithm - gcc 4.9 中的 std::rotate 返回值