亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[C++基礎(chǔ)] 命名空間namespace的了解和使用

RiverLi / 3540人閱讀

摘要:提出了一個新語法命名空間命名空間的定義對于上面的問題我們使用命名空間來解決我們使用來劃定一個區(qū)域,叫做域,域的名字叫名字可以自己定義,但是最好不要跟庫已有的重復(fù)。

命名空間 namespace

#includeint rand = 0;int main(){	printf("%d", rand);		return 0;}

上述代碼一定會出現(xiàn)以下情況:

原因: 自己定義的rand變量為某一庫函數(shù)里面已經(jīng)聲明過的函數(shù),意思就是你自己定義的東西跟庫函數(shù)的東西重復(fù)了。這種錯誤就是命名沖突。

命名沖突問題:

  1. 我們自己定義的變量、函數(shù)可能跟庫里面重名沖突。
  2. 進入公司項目組后,做的項目通常比較大,多人協(xié)作,可能命名沖突。
    C語言沒有辦法很好的解決這個問題。
    C++提出了一個新語法:命名空間

命名空間的定義

對于上面的問題我們使用命名空間來解決:

#includenamespace zzy{	int rand = 0;}int main(){	printf("%d", zzy::rand);		return 0;}

我們使用namespace來劃定一個區(qū)域,叫做,域的名字叫zzy(名字可以自己定義,但是最好不要跟庫已有的重復(fù))。這個域就像是隱身衣一樣,讓系統(tǒng)編譯的時候不會去這個區(qū)域里面讀取。

:: 為域作用限定符,前面是命名空間的名稱,后面是命名空間里的變量、類型、函數(shù)等。使用這個限定符來指定我們使用的是哪個命名空間里的變量

需要注意的一點是,命名空間是全局的,必須要寫在main函數(shù)的外邊。

下面舉些例子來幫大家更清晰的了解命名空間:
1. 函數(shù)定義在命名空間里

#includenamespace zzy{	int Add(int x, int y)	{		return x + y;	}}int main(){	printf("%d/n", zzy::Add(1, 2));	return 0;}

如果把函數(shù)的定義寫在命名空間的外面,而函數(shù)聲明在命名空間里面會怎么樣?由于命名空間會屏蔽掉,相當(dāng)于你沒有寫這個聲明。但是如果你的函數(shù)定義寫在main函數(shù)的上面就沒什么問題了。

#includenamespace zzy{	int Add(int x, int y);}int Add(int x,int y){	return x+y;}int main(){	printf("%d/n",/*zzy::*/Add(1, 2));	return 0;}

一點要注意,這個時候你不可以寫zzy::了,因為如果你這么寫的話系統(tǒng)會優(yōu)先去zzy命名空間里去尋找,發(fā)現(xiàn)只有函數(shù)的聲明,沒有函數(shù)的定義,所以是沒結(jié)果的。

2.對全局變量使用命名空間

#include int a = 0;int main(){	int a = 10;	printf("%d",::a);//使用全局作用域的a,::前面的沒有東西代表全局作用域}

3.命名空間的嵌套

#include namespace zzy{	int a = 10;	namespace N1	{		int b = 20;	}}int main(){	printf("%d/n",zzy::a);	printf("%d/n",zzy::N1::b);}

4.using命名空間
我們發(fā)現(xiàn),每次使用一些命名空間里的變量總是要加上”命名空間名稱::”,當(dāng)變量多時,就會顯得很繁瑣。所以我們可以這么做:

#include using namespace zzy{	int count = 12;	int Add(int x,int y)	{		return x+y;	}}//解放了整個zzy空間,使里面的變量等變得不隱身了using namespace zzy;int main(){	printf("%d",count);	printf("%d",Add(1,2));}

也可以解放一部分變量、函數(shù)等:

#include using namespace zzy{	int count = 12;	void B()	{		int cur = 0;	}}//只解放了一部分變量using zzy::B::cur;int main(){	printf("%d",zzy::count);	printf("%d",cur);}

5.命名空間里的結(jié)構(gòu)體

#include using namespace zzy{	int count = 0;	struct Node	{		int val = 0;	};}int main(){	struct zzy::Node node;//注意::的位置,我們要找的是Node	node.val = 12;	printf("%d/n", node.val);}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/125069.html

相關(guān)文章

  • 關(guān)于C++基礎(chǔ)一些“碎碎念”

    摘要:使用命名空間的目的是對標(biāo)識符的名稱進行本地化,以避免命名沖突或名字污染,關(guān)鍵字的出現(xiàn)就是針對這種問題的。缺省參數(shù)概念缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認值。 ...

    Jackwoo 評論0 收藏0
  • 關(guān)于c++namespace,你真了解嗎?真會用嗎?

    摘要:據(jù)我了解,很多學(xué)校在學(xué)習(xí)的時候,老師會讓學(xué)生死記一條語句,那就是那么你真的了解它嗎命名空間是一個命名空間。如果我們真的想使用的話,的命名空間遍給了我們解決方法使用命名空間。 據(jù)我了解,很多學(xué)校在學(xué)習(xí)c++的時候,老師會讓學(xué)生死記一條語句,那就是 using?namespace?std; 那么...

    Lionad-Morotar 評論0 收藏0
  • C++初階】 關(guān)鍵字,命名空間,缺省參數(shù),IO函數(shù)重載

    摘要:事實上語言當(dāng)中有的內(nèi)容,比如函數(shù)循環(huán)結(jié)構(gòu)體宏等等內(nèi)容,也都有,所以大家千萬不要認為語言白學(xué)了哈因為之前已經(jīng)完整更新過語言的博客有需要可以往前翻,所以這里直接介紹相對語言當(dāng)中新增的內(nèi)容,而本章引入的內(nèi)容是的關(guān)鍵字命名空間缺省參數(shù)函數(shù)重載。 ...

    winterdawn 評論0 收藏0
  • C++從0到1之命名空間

    摘要:從到之命名空間入門命名空間命名空間定義命名空間的使用輸入輸出入門命名空間在中,變量函數(shù)和后面要學(xué)到的類都是大量存在的,這些變量函數(shù)和類的名稱將都存在于全局作用域中,可能會導(dǎo)致很多沖突。 ...

    fsmStudy 評論0 收藏0
  • C++入門—namespace使用傻傻分不清楚&C++中函數(shù)參數(shù)也可以配備胎&a

    摘要:使用輸入輸出更方便,不需增加數(shù)據(jù)格式控制,比如整形,字符等缺省參數(shù)備胎缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個默認值。此外,函數(shù)重載要求參數(shù)不同,而跟返回值沒關(guān)系。 ...

    pingan8787 評論0 收藏0

發(fā)表評論

0條評論

RiverLi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<