第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;
	}


#vote((^ω^)わかったお[6],普通[0],。(`ω´#)。わかりにくぃぜぇえええええ[0])
#vote((^ω^)わかったお[7],普通[0],。(`ω´#)。わかりにくぃぜぇえええええ[0])

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS