C++命名空間使用詳細(xì)介紹
1.前言
在c++中,為了避免代碼名稱上所產(chǎn)生沖突,引入了命名空間這個(gè)東西。
命名空間相當(dāng)于劃分出一定的空間,為特定的類型,函數(shù)和變量等的名稱(也就是標(biāo)識(shí)符)提供了一個(gè)范圍。
命名空間之內(nèi)的標(biāo)識(shí)符訪問彼此沒有限制,命名空間之外的標(biāo)識(shí)符可通過使用每個(gè)標(biāo)識(shí)符的完全限定名來訪問成員,也可通過單個(gè)標(biāo)識(shí)符的using聲明或命名空間中所有標(biāo)識(shí)符的using指令來訪問成員。
命名空間可以定義在幾個(gè)不同的部分中,因此命名空間是由幾個(gè)單獨(dú)定義的部分組成的。一個(gè)命名空間的各個(gè)組成部分可以分散在多個(gè)文件中。
2.定義
命名空間的定義使用關(guān)鍵字namespace,后跟命名空間的名稱。
namespace namespace_name
{
// 代碼聲明
}
調(diào)用帶有命名空間的函數(shù)或者變量時(shí),需要在前面加上命名空間的名稱(使用完全限定名)。
namespace_name::code; // code 可以是變量或函數(shù)
樣例:
#include<iostream> using namespace std; namespace A { void func() { cout << "A" << endl; } } // 第二個(gè)命名空間 namespace B { void func() { cout << "B" << endl; } } int main() { // 調(diào)用第一個(gè)命名空間中的函數(shù) A::func(); // 調(diào)用第二個(gè)命名空間中的函數(shù) B::func(); return 0; }
結(jié)果:
3.using 指令
當(dāng)使用using 指令時(shí),便可不用加完全限定名直接訪問。
這個(gè)指令會(huì)讓編譯器直接使用namespace里的所有名稱。
樣例:
#include<iostream> using namespace std; namespace A { void func() { cout << "A" << endl; } } // 第二個(gè)命名空間 namespace B { void func() { cout << "B" << endl; } } using namespace B; int main() { // 只會(huì)調(diào)用第二個(gè)命名空間中的函數(shù) func(); return 0; }
結(jié)果:
4.using 聲明
使用 using 聲明,以將一個(gè)標(biāo)識(shí)符引入范圍:
#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.嵌套的命名空間
一個(gè)命名空間中可以定義另一個(gè)命名空間,一般形式為:
namespace namespace_name1 { // 代碼聲明 namespace namespace_name2 { // 代碼聲明 } }
像上列代碼,如果要訪問namespace_name2中的成員,我們得使用::運(yùn)算符來訪問:
// 訪問 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; } // 第二個(gè)命名空間 namespace B { void func() { cout << "B" << endl; } } } using namespace A::B; int main() { // 只會(huì)調(diào)用第二個(gè)命名空間中的函數(shù) func(); return 0; }
結(jié)果為:
到此這篇關(guān)于C++命名空間使用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)C++命名空間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
String底層函數(shù)的實(shí)現(xiàn)方式詳解
這篇文章主要介紹了String底層函數(shù)的實(shí)現(xiàn)方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09C++生成dll和調(diào)用dll的方法實(shí)例
C++生成dll和調(diào)用dll的方法實(shí)例,需要的朋友可以參考一下2013-03-03