:: std :: string和std :: string有什么区别?

时间:2017-01-06 05:59:17

标签: c++

::std::stringstd::string之间有什么区别 前者是全球性的吗?但全局是什么?不是命名空间std全球? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:14)

::std::string表示全局命名空间中名称空间string中的std。前导::强制查找在全局命名空间中开始。因此::std::string始终表示C ++标准库中的string类型。

std::string表示名称空间string中的std,其中std将在当前范围内查找。因此,如果存在名为std的类,命名空间或枚举,则名称查找可能会找到std

#include <string>
namespace foo {
  namespace std {
    class string { ... };
    namespace bar {
      std::string s;    // means foo::std::string
      ::std::string s;  // means string from standard library
    }
  }
}

只要您和您的协作者同意不指定任何内容::,就不必使用前导std。这只是一种很好的风格。