1. 程式人生 > >C++_名稱空間namespace 與 using編譯指令 與 using宣告使用。

C++_名稱空間namespace 與 using編譯指令 與 using宣告使用。

名稱空間:

C++中允許使用者建立自己的使用者空間。可以通過關鍵字namespace 宣告即可

需要注意的事項:

名稱空間可以是全域性的,也可以位於另一個名稱空間中,但不能位於程式碼塊中。

示例程式碼如下:

#include <iostream>

using namespace std;

namespace Jill{
	double bucket(double a){ return a + 3; }
	double fetch;
	struct Hill{
		int a;
		int b;
	};
};

int main(){

	Jill::fetch = 3;

	cout << Jill::bucket(2) << endl;

	return 0;
}

using指令:

using 宣告使特定的標示符可用。

示例如下:如同使用了包裡的一個變數,在接下來的作用域裡不需要顯示使用作用域標示符,也不能定義同名變數。

#include <iostream>

using namespace std;

namespace Jill{
	double bucket(double a){ return a + 3; }
	double fetch;
	struct Hill{
		int a;
		int b;
	};
};



int main(){

	using Jill::fetch;

	Jill::fetch = 7;
	
	double fetch;


	cin >> fetch;
	cout << fetch << endl;
	cout << Jill::fetch << endl;

	cout << Jill::bucket(2) << endl;

	return 0;
}


using 編譯指令使整個名稱空間可用。

#include <iostream>

using namespace std;

namespace Jill{
	double bucket(double a){ return a + 3; }
	double fetch;
	struct Hill{
		int a;
		int b;
	};
};



int main(){

	using namespace Jill;

	Jill::fetch = 7;
	
	//double fetch;


	cin >> fetch;
	cout << fetch << endl;
	cout << Jill::fetch << endl;

	cout << Jill::bucket(2) << endl;

	return 0;
}


名稱空間是開放的(open),可以把名稱加入到已有的名稱空間中。例如下面的語句:

namespace Jill{

char * goose(const char *);

}

可以在檔案的後面(或另外一個檔案中)再次使用Jack名稱空間來提供該函式的程式碼。

namespace Jill{

char * goose(const char * xx){

.........

}

}

可以給名稱空間取別名。

如:namespace mvft  =  my_very_favorite_things;

namespace MEF =  myth::elements::fire;

#include <iostream>

using namespace std;

namespace Jill{
	double bucket(double a){ return a + 3; }
	double fetch;
	struct Hill{
		int a;
		int b;
	};
	namespace Pick{
		int abile;
	}
};

namespace tank = Jill::Pick;

int main(){

	Jill::fetch = 3;
	tank::abile = 4;

	cout << tank::abile << endl;
	cout << Jill::bucket(2) << endl;

	return 0;
}

可以定義省略名稱空間的名稱來建立未命名的名稱空間:

namespace{

int  ice;

int  bandycoot;

}