真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

一、名稱空間

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

創(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ù),滿足客戶于互聯(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++名稱空間

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

1.2、新的C++名稱空間

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

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

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

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

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

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

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

1.3.1、using聲明

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

using Jill::fetch;

using聲明將特定的名稱添加到它所屬的聲明區(qū)域中,完成該聲明后,便可以使用名稱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聲明將名稱添加到局部聲明區(qū)域中,所以無法將另一個(gè)局部變量也聲明為fetch了,同時(shí)Jill::fetch將同名的全局變量隱藏。

1.3.2、using編譯指令

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

1.4、名稱空間極其前途

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

二、多文件組織策略

C++鼓勵(lì)程序員在開發(fā)程序時(shí)使用多個(gè)文件,一種有效的組織策略是:
1、使用頭文件來定義用戶類型,為操縱用戶類型的函數(shù)提供函數(shù)原型。
2、并將函數(shù)的定義放在一個(gè)獨(dú)立的源代碼文件里,頭文件和源文件一起定義和實(shí)現(xiàn)了用戶定義的類型及其使用方式。
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)查看詳情吧


網(wǎng)站標(biāo)題:C++的名稱空間-創(chuàng)新互聯(lián)
URL分享:http://weahome.cn/article/ddjesc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部