web-dev-qa-db-ja.com

「using namespace std」の使用とは何ですか?

using namespace stdの使用法は何ですか?

レイマンの言葉で説明を見てみたい。

57
Jarvis
  • sing:使用します。
  • namespace:何を使用しますか?名前空間。
  • stdstd名前空間(stringvectorなどのC++標準ライブラリの機能が宣言されている場所)。

この命令を書いた後、コンパイラがstringを見ると、std::stringを参照している可能性があることがわかり、vectorを見ると、std::vectorを参照している可能性があることがわかります。 (もちろん、それらが定義されているヘッダーファイルをコンパイルユニットに含めている場合)。

あなたがそれを書かない場合、コンパイラがstringまたはvectorを見たとき、それはあなたが何を参照しているのか分からないでしょう。 std::stringまたはstd::vectorを明示的に指定する必要があります。そうしないと、コンパイルエラーが発生します。

81
Daniel Daranas

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;
}
28