C++的名稱空間的使用
阿新 • • 發佈:2018-11-01
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");
}