1. 程式人生 > >47.名稱空間namespace

47.名稱空間namespace

每個名稱空間就是一個作用域。

名稱空間是不連續,存在則追加,不存在則建立

內聯名稱空間,可以使得最外層的名稱空間直接使用內層任何一層的成員名字,而無需新增中間層的名稱空間的名字

未命名的名稱空間中定義的成員具有靜態生命週期,宣告時建立,程式結束時銷燬。內層未命名的名稱空間可以直接使用外層名稱空間的名字直接訪問成員。

名稱空間的別名

namespace abcdefj{

void hhhh() {std::cout<<"hello"<<std::endl;}};

namespace b = abcdefj;

b::hhhh();

名稱空間與函式過載與二義性。

namespace a {
	namespace {
		void print(std::string &&s) { std::cout << "namespace::print" << std::endl; }
	}

	void print() { std::cout << "a::print" << std::endl; }

}

namespace b {

	void print(int &s) { std::cout << "b::print" << std::endl; }
}

namespace c{

	using namespace a;
	using namespace b;
	void print(double &&s) { std::cout << "c::print" << std::endl; }
}

int main()
{
	using namespace c;
	print("meiyusb");
	print(2.3);
	system("pause");
	return 0;
}