namespace

読み:ネイム・スペース
外語:namespace 英語
品詞:名詞

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型であり、階層構造になっていることがわかる。

unnamed namespace

名前のないnamespaceを、unnamed namespaceまたは無名名前空間という。俗称でanonymous namespaceともいう。

このようにして定義された名前空間は、有効範囲がファイルスコープに制限される。つまり次のようにすると、そのファイルからは見えるが、他のファイルからは見えない、グローバル変数などを作成することができる。

namespace {
    int var;
}
void test()
{
    var++;
}

Cであればstaticを使った定義に相当するが、staticはもともと別の目的の予約語であるため、文脈によって意味が変わる仕様である。これは分かりにくく不評であることから、C++では無名名前空間として、同様の機能を用意することになった。

用語の所属
C++
記憶クラス
関連する用語
std
using
名前空間

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club