C++中命名空間(namespace)詳解及其作用介紹
為什么要有命名空間
在C語言中定義了3個(gè)層次的作用域:文件(編譯單元)、函數(shù)和復(fù)合語句
在C++中,多了類
全局變量中不能有同名函數(shù)、變量和類
為了使同名類存在,就要加作用域,于是就有了命名空間
命名空間是什么
命名空間是ANSI C++引入的可以由用戶命名的作用域,用來處理程序中常見的同名沖突
命名空間,實(shí)際上就是一個(gè)由程序設(shè)計(jì)者命名的內(nèi)存區(qū)域(分類用的)
沒有給命名空間分類的作用域了,同層次命名空間就不能重名了
namespace a
{
int b;
double c;
}
命名空間就是分類用的,和文件夾作用一樣的
全局變量可以理解為全局命名空間,就像根目錄
在全局命名空間(根目錄),創(chuàng)建命名空間(文件夾)
文件夾下可以繼續(xù)創(chuàng)建文件夾
只要同一級別名字不一樣就行
#include<stdio.h>
#include<stdlib.h>
namespace n1
{
namespace n1
{
int rand = 1;
}
}
int main()
{
int rand = 1;
printf("%d\n", n1::n1::rand);
return 0;
}
怎么用
面向?qū)ο螅魂P(guān)注對象,用函數(shù)庫進(jìn)行操作
大家都是正常人,正常的名字就那么多,不分類,誰知道說的是誰
#include<stdio.h>
#include<stdlib.h>
namespace n1
{
int a = 1;
}
namespace n2
{
int a = 1;
}
int main()
{
int rand = 1;
printf("%d\n", a);
return 0;輸出a,你說的是哪個(gè),n1的,還是n2的,
使用命名空間
using namespace n1
#include<stdio.h>
#include<stdlib.h>
namespace n1
{
int a = 1;
}
namespace n2
{
int a = 1;
}
using namespace n1;
int main()
{
int rand = 1;
printf("%d\n", a);
return 0;n1::a 相當(dāng)于給路徑
#include<stdio.h>
#include<stdlib.h>
namespace n1
{
int a = 1;
}
namespace n2
{
int a = 1;
}
int main()
{
int rand = 1;
printf("%d\n", n1::a);
return 0;到此這篇關(guān)于C++中命名空間(namespace)詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++命名空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
C語言使用鏈表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言使用鏈表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C++11中移動(dòng)構(gòu)造函數(shù)案例代碼
C++11 標(biāo)準(zhǔn)中為了滿足用戶使用左值初始化同類對象時(shí)也通過移動(dòng)構(gòu)造函數(shù)完成的需求,新引入了 std::move() 函數(shù),它可以將左值強(qiáng)制轉(zhuǎn)換成對應(yīng)的右值,由此便可以使用移動(dòng)構(gòu)造函數(shù),對C++11移動(dòng)構(gòu)造函數(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2023-01-01
OpenCV實(shí)現(xiàn)人臉識(shí)別簡單程序
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)人臉識(shí)別簡單程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
C++在多線程中使用condition_variable實(shí)現(xiàn)wait
這篇文章主要介紹了C++中的condition_variable中在多線程中的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
從c++標(biāo)準(zhǔn)庫指針萃取器談一下traits技法(推薦)
本篇文章基于gcc中標(biāo)準(zhǔn)庫源碼剖析一下標(biāo)準(zhǔn)庫中的模板類pointer_traits,并且以此為例理解一下traits技法,對c++ traits技法源碼分析感興趣的朋友跟隨小編一起看看吧2021-07-07

