C++的名稱(chēng)空間-創(chuàng)新互聯(lián)

一、名稱(chēng)空間

C++中,名稱(chēng)可以是變量、函數(shù)、結(jié)構(gòu)、枚舉、類(lèi)以及類(lèi)和結(jié)構(gòu)的成員。當(dāng)出現(xiàn)相同名稱(chēng)但是有不同的含義時(shí)會(huì)發(fā)生沖突,尤其是不同的類(lèi)庫(kù)中存在相同的名稱(chēng)時(shí),C++標(biāo)準(zhǔn)提供了名稱(chēng)空間工具,可以更好的控制名稱(chēng)的作用域。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的滎經(jīng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!1.1、傳統(tǒng)的C++名稱(chēng)空間

聲明區(qū)域:可以在其中進(jìn)行聲明的區(qū)域。比如全局變量的聲明區(qū)域?yàn)檎麄€(gè)文件,局部變量的聲明區(qū)域就是所在的代碼塊。
潛在作用域:從聲明點(diǎn)開(kāi)始,到其聲明區(qū)域的結(jié)尾。(潛在作用域比聲明區(qū)域小,因?yàn)樽兞勘仨毝x后才能使用)。
作用域:變量對(duì)程序而言可見(jiàn)的范圍。(作用域可能比潛在作用域小,比如全局變量可能會(huì)被函數(shù)內(nèi)同名局部變量隱藏導(dǎo)致不可見(jiàn))

1.2、新的C++名稱(chēng)空間

a、通過(guò)定義一種新的聲明區(qū)域來(lái)創(chuàng)建命名的名稱(chēng)空間,這樣可以提供一個(gè)聲明名稱(chēng)的區(qū)域,這樣一個(gè)名稱(chēng)空間的名稱(chēng)不會(huì)與另一個(gè)名稱(chēng)空間內(nèi)的相同名稱(chēng)發(fā)生沖突,同時(shí)允許程序的其他部分使用該名稱(chēng)空間中聲明的東西。

namespace Jill
{double bucket(double n);		       		   //函數(shù)聲明
	double fetch;								   //變量聲明
	int pal;									   //變量聲明
	struct Hill{};								   //結(jié)構(gòu)體聲明
}

b、名稱(chēng)空間可以是全局的也可以存在于其他的名稱(chēng)空間內(nèi),但是不能位于代碼塊中,默認(rèn)名稱(chēng)空間內(nèi)聲明的名稱(chēng)的鏈接性是外部的。
c、除了用戶(hù)定義的名稱(chēng)空間外,還存在一個(gè)定義好的名稱(chēng)空間-全局名稱(chēng)空間。對(duì)應(yīng)了文件級(jí)聲明區(qū)域。
d、名稱(chēng)空間是開(kāi)放的,可以把名稱(chēng)或函數(shù)聲明加入已有的名稱(chēng)空間中,也可以在文件的其他地方或另一個(gè)文件中再次使用該名稱(chēng)空間添加函數(shù)原型;

namespace Jill
{char t;
	char * goose(const char *);
	double bucke(double n) {....}
}

e、訪問(wèn)給定名稱(chēng)空間內(nèi)的名稱(chēng)。通過(guò)作用域解析運(yùn)算符::,使用名稱(chēng)空間來(lái)限定該名稱(chēng)。

Jill::fetch = 3.3;    //給變量賦值
Jill::bucket(4.4);	  //調(diào)用名稱(chēng)空間內(nèi)的函數(shù)
Jill::Hill mole;	  //創(chuàng)建一個(gè)名稱(chēng)空間內(nèi)的結(jié)構(gòu)體類(lèi)型變量
1.3、using聲明和using編譯

C++提供了兩種機(jī)制來(lái)簡(jiǎn)化對(duì)名稱(chēng)空間中名稱(chēng)的使用,using聲明可使特定的標(biāo)識(shí)符可用,using編譯指令可以使整個(gè)名稱(chēng)空間可用。
需要注意,using聲明和using編譯增加了名稱(chēng)沖突的可能性。且using聲明比using編譯更安全,因?yàn)閡sing聲明只導(dǎo)入特定的名稱(chēng),一旦于局部變量發(fā)生沖突,編譯器將給出提示。而using編譯導(dǎo)入所有的名稱(chēng),一旦與局部名稱(chēng)沖突,編譯器會(huì)使用局部名稱(chēng)將名稱(chēng)空間版本名稱(chēng),不會(huì)給出警告提示。

1.3.1、using聲明

using聲明由關(guān)鍵字using和被限定的名稱(chēng)組成。

using Jill::fetch;

using聲明將特定的名稱(chēng)添加到它所屬的聲明區(qū)域中,完成該聲明后,便可以使用名稱(chēng)fetch代替Jill::fetch。

double fetch;
int main ()
{using Jill::fetch;
	double fetch;       // 這是錯(cuò)誤的!,已經(jīng)有一個(gè)局部變量fetch了。
	cin >>fetch;       //讀取一個(gè)輸入值到Jill::fetch中
	cin>>::fetch;	  //讀取一個(gè)輸入值到全局變量fetch中
}

using聲明將名稱(chēng)添加到局部聲明區(qū)域中,所以無(wú)法將另一個(gè)局部變量也聲明為fetch了,同時(shí)Jill::fetch將同名的全局變量隱藏。

1.3.2、using編譯指令

using聲明由關(guān)鍵字using namespace 和被限定的名稱(chēng)空間組成。這將會(huì)使名稱(chēng)空間內(nèi)的所有的名稱(chēng)都可用,而不需要使用作用域解析運(yùn)算符::。
using namespace Jill;
using namespace std;

1.4、名稱(chēng)空間極其前途

a、使用在已命名的名稱(chēng)空間中聲明的變量,而不是使用外部全局變量。
b、使用在已命名的名稱(chēng)空間中聲明的變量,而不是靜態(tài)全局變量。
c、如果開(kāi)發(fā)了一個(gè)函數(shù)庫(kù)或類(lèi)庫(kù),應(yīng)該將其放在一個(gè)名稱(chēng)空間內(nèi),比如C++提倡將標(biāo)準(zhǔn)函數(shù)庫(kù)放在名稱(chēng)空間std內(nèi),
d、僅將using編譯指令作為一種將舊代碼轉(zhuǎn)換為使用名稱(chēng)空間的權(quán)宜之計(jì)。
e、不要在頭文件中使用using編譯指令,這樣會(huì)隱藏要讓哪些名稱(chēng)可用。
f、導(dǎo)入名稱(chēng)時(shí),選作用域解析運(yùn)算符或using聲明的方法。
g、對(duì)于using聲明,應(yīng)該選將作用域設(shè)置為局部而不是全局。

二、多文件組織策略

C++鼓勵(lì)程序員在開(kāi)發(fā)程序時(shí)使用多個(gè)文件,一種有效的組織策略是:
1、使用頭文件來(lái)定義用戶(hù)類(lèi)型,為操縱用戶(hù)類(lèi)型的函數(shù)提供函數(shù)原型。
2、并將函數(shù)的定義放在一個(gè)獨(dú)立的源代碼文件里,頭文件和源文件一起定義和實(shí)現(xiàn)了用戶(hù)定義的類(lèi)型及其使用方式。
3、將負(fù)責(zé)調(diào)度的主函數(shù)和其他使用這些函數(shù)的函數(shù)放在第三個(gè)文件里。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

名稱(chēng)欄目:C++的名稱(chēng)空間-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://bm7419.com/article32/ddjesc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、網(wǎng)站制作、靜態(tài)網(wǎng)站服務(wù)器托管、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管