第12回は
名前空間について説明します
といっても大したことはないんだけど・・・(ぇ
名前空間というのは
たとえば、プログラムが大きくなって
同じ変数名とか同じ関数名とかが
被ったりすることがあります
それを回避するために
変数、構造体、クラス、関数などに
名前空間をつけて(名前空間で囲って)
被りにくくします
いままで
#include <iostream> using namespace std;
としてきました
これは、名前空間stdを省略しますよっていうことだったのです
つまり、
これまで使ってきたcoutやendlなどは
std名前空間定義されているため
次のように書くのが正式(?)です
std::cout << std::endl;
自分で名前空間を作成するときは
namespace 名前空間名{ // 変数やら構造体やらクラスやら関数やらをこの中に定義 };
のように定義します
具体例は下に示します。
#include <iostream> // 自作名前空間 namespace MyStd{ static const int global_int = 100; struct MyData{ int a; char b; }; class MyClass{ public: MyClass(){} ~MyClass(){} void Test(){ //cout << "" << endl; // 省略できませーん using namespace std; cout << "省略可能です" << endl; }// stdが省略できるのはここまで }; }; // 名前空間の省略(グローバル領域) // 省略するには先に名前空間が定義されてないといけない using namespace MyStd; int main(){ // coutやendlはstd名前空間で定義されている std::cout << "stdを付けるのが正式です" << std::endl; // 名前空間で囲んであるやつは // 名前空間:: // でアクセス int integer1 = MyStd::global_int; MyStd::MyData mydata1; MyStd::MyClass myclass1; // using namespaceを使用すると省略できます // グローバル領域で使うとファイル内全域省略可能です int integer2 = global_int; MyData mydata2; MyClass myclass2; myclass1.Test(); return 0; }