7
::std::string
とstd::string
の違いは何ですか 前者はグローバルですか?しかし、何のためにグローバル?名前空間stdグローバルではないですか? 私を助けてくれてありがとう。:: std :: stringとstd :: stringの違いは何ですか?
::std::string
とstd::string
の違いは何ですか 前者はグローバルですか?しかし、何のためにグローバル?名前空間stdグローバルではないですか? 私を助けてくれてありがとう。:: std :: stringとstd :: stringの違いは何ですか?
::std::string
は、グローバル名前空間内のstd
のstring
を意味します。先頭の::
は、ルックアップをグローバル名前空間で開始させます。したがって、::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
に名前を付けないことに同意するものとして有力::
を使用する必要はありません。それは単なる良いスタイルです。