C++ではネームスペースという名前空間を定義して、外からは見えないようにすることができる。別の名前空間で定義することによって同じ名前のものでも衝突が起きない。
たとえば次のプログラムではMyNameSpaceというネームスペースを定義しており、その中の変数iとmain関数の直前の変数iは別物となる。特定のネームスペースの中のものを参照したい場合は ネームスペース名::参照したいもの で参照できる。
#include <iostream> using namespace std; namespace MyNameSpace { int i = 123; class Test { public: void put() { cout << i << endl; } }; } int i = 456; int main() { MyNameSpace::Test test; test.put(); cout << i << endl; MyNameSpace::i = 100; test.put(); }
実行結果
123 456 100
自分一人でコードを書いているので、あんまりネームスペースのありがたみを実感したことがない。以前書いたライブラリではほとんどのものをクラス内に閉じ込めるような形で書いたので名前が衝突するようなことは起きなかった。
複数の人数で開発する大きなプロジェクトのときに威力を発揮するのだろう。