名前空間・namespace

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

namespace

C++では、名前空間(namespace)を定義でき、これにより大きなプログラムなどで、変数名の重複を避けることができます。

#include <iostream>
 
namespace family {
   char father[] = "Tom";
   char mother[] = "Kelly";
   char son[] = "Bob";
   // 名前空間をネスト
   namespace friends {
       char friend_male[] = "Devid";
       char friend_female[] = "Silvia";
   }
}
 
int main() {
    std::cout << family::father << "\n";
    std::cout << family::mother << "\n";
    std::cout << family::son << "\n";
    std::cout << family::friends::friend_male << "\n";
    std::cout << family::friends::friend_female << "\n";
}

namespaceで定義した名前空間内の変数には、namespace::varとすることでアクセスできます。
これは、実は、今までも標準で用いていた「std::cout」も同じ実装となっています。
また、名前空間は、ネスとして定義することができ、アクセスにはnamespace名を「::」でつないでアクセスします。

実行結果。

Tom
Kelly
Bob
Devid
Silvia


名前空間と関数

namespace math {
    int square(const int i) {
        return (i * i);
    }
}
math::square(3);

名前空間は、変数だけでなく関数にも作用します。


グローバル名前空間

::global_var = 22;

このように、空の名前空間を割り当てて変数宣言と代入を行うと、すべての名前空間の外側で宣言されている変数globalに値「22」を代入します。


ファイル固有名前空間

namespace {
・・・
}

namespace に続いて、名前空間名を書かず、名前のない名前空間を宣言すると、名前空間に含まれているすべての宣言がファイル固有の名前空間に配置される。


日時: 2008年06月03日 23:26
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/201

この記事にトラックバックされる方は、参照先が分かるようにするために、「名前空間・namespace」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - C言語とC++勉強ルーム