using namespace std
の使用法は何ですか?
レイマンの言葉で説明を見てみたい。
std
名前空間(string
やvector
などのC++標準ライブラリの機能が宣言されている場所)。この命令を書いた後、コンパイラがstring
を見ると、std::string
を参照している可能性があることがわかり、vector
を見ると、std::vector
を参照している可能性があることがわかります。 (もちろん、それらが定義されているヘッダーファイルをコンパイルユニットに含めている場合)。
あなたがそれを書かない場合、コンパイラがstring
またはvector
を見たとき、それはあなたが何を参照しているのか分からないでしょう。 std::string
またはstd::vector
を明示的に指定する必要があります。そうしないと、コンパイルエラーが発生します。
using namespace <some_namespace>;
を呼び出すと、ネームスペースプレフィックスを追加せずに、そのネームスペース内のすべてのシンボルが表示されます。シンボルは、たとえば関数、クラス、または変数です。
例えば。 using namespace std;
を追加すると、名前空間cout
で定義されている演算子cout
を呼び出すときに、std::cout
の代わりにstd
のみを記述できます。
名前空間は名前の衝突を避けるために使用されることを意図しており、using namespace
を書くことでコードを節約できますが、この利点を失うため、これはやや危険です。より良い代替方法は、特定のシンボルのみを使用して、名前空間プレフィックスなしでそれらを表示することです。例えば:
#include <iostream>
using std::cout;
int main() {
cout << "Hello world!";
return 0;
}