ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
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++の予約語の一つ。名前空間を定義する。
標準C++ライブラリが所属する名前空間として、stdが予約されている。
比較的多く、「using namespace std;」をプログラムの先頭に書いてstd名前空間のものをグローバルと同様に扱うプログラマーも多いが、これには賛否両論がある。
namespace unique { declaration-list }
名前空間を使うと、変数などの一群に特定の名前を付け、階層化して表現することができる。
namespace A { int var; } void test() { A::var++; }
名前空間の中にさらに名前空間を含めることも可能で、こうすると多層化できる。
例えば、std::stringで使う、位置や長さを格納する変数はstd::string::size_type型であり、階層構造になっていることがわかる。
名前のないnamespaceを、unnamed namespaceまたは無名名前空間という。俗称でanonymous namespaceともいう。
このようにして定義された名前空間は、有効範囲がファイルスコープに制限される。つまり次のようにすると、そのファイルからは見えるが、他のファイルからは見えない、グローバル変数などを作成することができる。
namespace { int var; } void test() { var++; }
Cであればstaticを使った定義に相当するが、staticはもともと別の目的の予約語であるため、文脈によって意味が変わる仕様である。これは分かりにくく不評であることから、C++では無名名前空間として、同様の機能を用意することになった。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます