1. 程式人生 > >C++的名稱空間的使用

C++的名稱空間的使用

C++名稱空間的定義

         namespace name {  …  }

C++名稱空間的使用

         使用整個名稱空間:using namespace name;

        使用名稱空間中的變數:using name::variable;

        使用預設名稱空間中的變數:::variable

        預設情況下可以直接使用默 認名稱空間中的所有識別符號

注意:

      在C++中的名稱空間的使用是有兩種機制:using宣告和using編譯指令

using宣告: using name::variable

using編譯指令:using namespace name

注意這兩種機制的區別:using宣告是直接宣告使用name空間中的變數,而using編譯可以使用整個name名稱空間中的所有

使用了using宣告,其實就相當於直接就使用該變數的記憶體,可以直接使用該變數,如:

#include "iostream"
using namespace std;

namespace  namespaceA
{
	int a = 10;
}

void main()
{
    using namespaceA::a;
    cout<< a <<endl;
    system('pause');

}

using編譯指令:可以直接使用這個名稱空間中的所有

#include "iostream"
using namespace std;

namespace  namespaceA
{
	int a = 10;
}

void main()
{
    using namespace namespaceA;
    cout<< a <<endl;
    system('pause');

}

但是需要注意:如果同時使用using兩個名稱空間,但是兩個名稱空間中存在的同一名稱的變數,需要加上名稱空間符號,否則會有衝突,如:

namespace  namespaceA
{
	int a = 10;
}

namespace  namespaceB
{
	int a = 20;
	namespace namespaceC
	{
		struct Teacher
		{
			char name[32];
			int age ;
		};
	}
}

//4 使用名稱空間
//
void main()
{
	using namespace namespaceA;
	using namespace namespaceB;
	cout<<namespaceA::a<<endl;  //因為namespaceA和namespaceB兩個名稱空間中都存在變數a,因此
                      //直接寫a是會出編譯錯誤的,需要加上名稱空間字首
	cout<<namespaceB::a<<endl;

	//顯示的, 寫全
	{
		//namespaceB::namespaceC::Teacher t1;
		//t1.age = 33;
	}
	

	

	using namespaceB::namespaceC::Teacher  ;
	Teacher t2;
	t2.age = 36;


	system("pause");
}