【问题标题】:when do we use scope resolution operator before new ( ::new)?我们什么时候在 new (::new) 之前使用范围解析运算符?
【发布时间】:2017-10-26 00:12:42
【问题描述】:

我遇到了一个代码,其中范围解析运算符放在 new 之前。我们什么时候使用它。它的含义是什么。谁能解释一下?

【问题讨论】:

  • 你知道它在其他情况下的作用吗? (如果不是,为什么不呢?)您是否期望它对new 有其他含义? (如果是,为什么?)

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


【解决方案1】:

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

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

这里列出了所有可能的运算符new 供参考:http://en.cppreference.com/w/cpp/memory/new/operator_new

【讨论】:

  • 新位置值得一提;这是我最常用的::new
猜你喜欢
  • 2017-09-08
  • 2014-07-02
  • 2015-01-14
  • 2014-03-26
  • 2011-05-24
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多