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 に続いて、名前空間名を書かず、名前のない名前空間を宣言すると、名前空間に含まれているすべての宣言がファイル固有の名前空間に配置される。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/201