2015年9月30日水曜日

名前空間

C++を使用するときに、include文の後に
using namespace std;
と宣言していた。
これは、C++を学び始めた頃に
"おまじないとして宣言しておくこと"
といわれたので何も考えずに宣言していた。
けど、namespaceってなんだ?

名前空間

namespaceは日本語では名前空間と言われている。
じゃーその実態はなんなのか?

簡単にいうと、
(複数のファイルで構成される)プログラムを書いたときに、名前(関数でも変数でも)の衝突を避けるためのもの
と言う事らしい。

coutって何となく使っていたけれど、これはiostreamをincludeしたら使用できる関数。
けれど、ただ
cout << "hogehoge";
では使用できない。
std::cout << "hogehoge";
とする必要がある。これは、iostream内でcoutがstdという名前空間の中で書かれている事が原因である。

いちいちstd::coutと書いていたら面倒なので、そのファイル内ではcoutと書かれたらstd::coutを使用すると宣言していたのが、
using namespace std;

これによって、
cout << "hogehoge";
としても、そのファイル内ではstd::coutの事なのね、とコンパイラーさんは理解してくれる。