第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;
	}
選択肢 投票
(^ω^)わかったお 2  
普通 0  
。(`ω´#)。わかりにくぃぜぇえええええ 0  

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-12-14 (木) 18:28:36