C++命名空間使用詳細介紹
1.前言
在c++中,為了避免代碼名稱上所產(chǎn)生沖突,引入了命名空間這個東西。
命名空間相當(dāng)于劃分出一定的空間,為特定的類型,函數(shù)和變量等的名稱(也就是標(biāo)識符)提供了一個范圍。
命名空間之內(nèi)的標(biāo)識符訪問彼此沒有限制,命名空間之外的標(biāo)識符可通過使用每個標(biāo)識符的完全限定名來訪問成員,也可通過單個標(biāo)識符的using聲明或命名空間中所有標(biāo)識符的using指令來訪問成員。
命名空間可以定義在幾個不同的部分中,因此命名空間是由幾個單獨定義的部分組成的。一個命名空間的各個組成部分可以分散在多個文件中。
2.定義
命名空間的定義使用關(guān)鍵字namespace,后跟命名空間的名稱。
namespace namespace_name
{
// 代碼聲明
}
調(diào)用帶有命名空間的函數(shù)或者變量時,需要在前面加上命名空間的名稱(使用完全限定名)。
namespace_name::code; // code 可以是變量或函數(shù)
樣例:
#include<iostream>
using namespace std;
namespace A
{
void func()
{
cout << "A" << endl;
}
}
// 第二個命名空間
namespace B {
void func()
{
cout << "B" << endl;
}
}
int main()
{
// 調(diào)用第一個命名空間中的函數(shù)
A::func();
// 調(diào)用第二個命名空間中的函數(shù)
B::func();
return 0;
}結(jié)果:

3.using 指令
當(dāng)使用using 指令時,便可不用加完全限定名直接訪問。
這個指令會讓編譯器直接使用namespace里的所有名稱。
樣例:
#include<iostream>
using namespace std;
namespace A
{
void func()
{
cout << "A" << endl;
}
}
// 第二個命名空間
namespace B {
void func()
{
cout << "B" << endl;
}
}
using namespace B;
int main()
{
// 只會調(diào)用第二個命名空間中的函數(shù)
func();
return 0;
}結(jié)果:

4.using 聲明
使用 using 聲明,以將一個標(biāo)識符引入范圍:
#include<iostream>
using namespace std;
namespace A
{
class a
{
public:
void func()
{
cout << "A" << endl;
}
};
}
using namespace A;
A::a aa;
int main()
{
aa.func();
return 0;
}結(jié)果為:

5.嵌套的命名空間
一個命名空間中可以定義另一個命名空間,一般形式為:
namespace namespace_name1 {
// 代碼聲明
namespace namespace_name2 {
// 代碼聲明
}
}像上列代碼,如果要訪問namespace_name2中的成員,我們得使用::運算符來訪問:
// 訪問 namespace_name2 中的成員
using namespace namespace_name1::namespace_name2;
// 訪問 namespace_name1 中的成員
using namespace namespace_name1;
樣例:
#include<iostream>
using namespace std;
namespace A
{
void func()
{
cout << "A" << endl;
}
// 第二個命名空間
namespace B
{
void func()
{
cout << "B" << endl;
}
}
}
using namespace A::B;
int main()
{
// 只會調(diào)用第二個命名空間中的函數(shù)
func();
return 0;
}結(jié)果為:

到此這篇關(guān)于C++命名空間使用詳細介紹的文章就介紹到這了,更多相關(guān)C++命名空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

