[英]What is the difference between ::std::string and std::string?
::std::string
和std::string
什么區別前者是全局的? 但全局是什么?不是命名空間std全球? 謝謝你的幫助。
::std::string
表示全局命名空間中命名空間std
中的string
。 leading ::
強制查找在全局命名空間中開始。 因此::std::string
總是表示C ++標准庫中的string
類型。
std::string
表示命名空間std
string
,其中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
,就沒有必要使用前導::
這只是一種很好的風格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.