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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹的操作
二叉樹可以簡單理解為對于一個(gè)節(jié)點(diǎn)來說,最多擁有一個(gè)上級節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的實(shí)現(xiàn)和遍歷,需要的可以參考一下2022-04-04
C語言 動(dòng)態(tài)分配數(shù)組案例詳解
這篇文章主要介紹了C語言 動(dòng)態(tài)分配數(shù)組案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C語言之把數(shù)組名作函數(shù)參數(shù)的四種情況說明
這篇文章主要介紹了C語言之把數(shù)組名作函數(shù)參數(shù)的四種情況說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
C語言數(shù)據(jù)類型和格式說明符基礎(chǔ)教程示例
這篇文章主要為大家介紹了C語言數(shù)據(jù)類型和格式說明符基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
C++實(shí)踐排序函數(shù)模板項(xiàng)目的參考方法
今天小編就為大家分享一篇關(guān)于C++實(shí)踐排序函數(shù)模板項(xiàng)目的參考方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
C++利用函數(shù)動(dòng)態(tài)創(chuàng)建二維數(shù)組
這篇文章主要為大家詳細(xì)介紹了C++利用函數(shù)動(dòng)態(tài)創(chuàng)建二維數(shù)組,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09

