我们什么时候在new(:: new)之前使用范围解析运算符?

时间:2017-05-25 11:00:30

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

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

1 个答案:

答案 0 :(得分:4)

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

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

以下是所有可能的运算符new的大列表供参考:http://en.cppreference.com/w/cpp/memory/new/operator_new