6. 1. 4 名前空間の定義はどのように行うのですか
C の場合、関数名については、最終的な実行形式を作る時点で、 名前については、たった一つの空間しかありませんでした。 そこで、重複(衝突)を避けるために、名前の工夫が必要でした。 これは関数ばかりでなく大域変数(global variable)も同様でした。
しかし C++ では名前空間というものが導入されました。
namespace N {
}
とすると、名前空間 N を作ります。 この波形かっこの中の名前はこの中だけで有効な名前に なります。
これは同じファイルの別の部分に記述してもいいですし、別のファイル に書いても同じ名前空間とすることが出来ます。つまり上に書いた namespace N とは別に、また他のところに
namespace N {
}
という部分があれば、結果的には、それらは飛地のように、一つの名前空間と して扱われます。
この名前空間の中で作った名前を 外から参照する必要がある時には、 前に N:: という文字を付けます。
ある別の名前空間で、N::f() を良く使うので、簡単に書きたい、 という時には次のように書いておくと、f()と書いただけで N::f() の意味になります。
using N::f;
また、 まとめて、別の空間の識別子(identifier)を良く参照すると いうような場合には、次のように書いておきます。
using namespace N;
そうすると、この文以降に 記述する名前で、N:: にあるものは、N:: を付けないで参照出来ます。
良く使われるのは次のような文で、これは C のへッダを参照する時に使います。
using namespace std;
