ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
名前の集合を複数に分割することで、互いの衝突を避ける仕組み。
ここでは、C++/Java風の架空プログラムによって説明を行なう。
例えば、次のようなコードを想定する。
void hoge() {}; void hoge() {}; void main() { hoge(); }
この場合は、同じhogeが複数存在するため、どちらを用いればよいのか判断することが出来ない。複数人数で処理を書いている場合に、このようなことが発生しやすい。
そこで例えば、開発グループごとに、grp?_という名前を付けるものとして取り決めたとする。
void grpA_hoge() {}; void grpB_hoge() {}; void main() { grpA_hoge(); grpB_hoge(); }
これによって呼び出すべきものが一意に定まるため、衝突は回避される。しかし、この方法では名前が長くなりがちで不便であり、プログラムの見通しも悪くなる。
そこで、それぞれの関数を別の名前空間に入れることで解決を図る。
namespace grpA { void hoge() {}; }; namespace grpB { void hoge() {}; }; void main() { grpA::hoge(); grpB::hoge(); }
名前空間を変えておけば、わざわざ名前に特殊な加工をする必要がなくなる。
この例では、grpA内のプログラムから名前空間grpAの関数を呼ぶ場合も逐一grpAを書く必要が生じるが、これも現在の標準的な名前空間を別途指定することで、名前空間の名前を略することも出来る。
using grpA; void main() { hoge(); }
この場合は、hogeだけであっても、grpA::hogeが参照されることになる。
名前空間を分離した場合でも、していない時と何ら変わらないように処理を書くことが可能である。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます