国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

小白的感悟第五彈—C++命名空間的幾種玩法

2019-11-08 01:41:09
字體:
供稿:網(wǎng)友

**什么是命名空間?**

命名空間域是隨標(biāo)準(zhǔn)C++而引入的。它相當(dāng)于一個(gè)更加靈活的文件域(全局域),可以用花括號(hào)把文件的一部分括起來,并以關(guān)鍵字namespace開頭給它起一個(gè)名字:

namespace name1{     int a = 0; }

說到這里,相信你一定會(huì)想到std這個(gè)命名空間。

沒錯(cuò),標(biāo)準(zhǔn)C++庫中的所有組件都是在一個(gè)被稱為std的名字空間中聲明和定義的。

**命名空間的幾種玩法...**

   NO.1 兩種訪問方式

   要在采用標(biāo)準(zhǔn)C++的平臺(tái)上使用標(biāo)準(zhǔn)C++庫中的組件,有兩種方式:

   1.寫一個(gè)using指示符:using namespace std; 直接使用標(biāo)準(zhǔn)C++庫中的所有成員。

   2.用std::成員 的方式使用C++庫里的成員。(::是作用域解析符)

 

在這里,我們只需要了解有這兩種方式即可。為了程序的簡(jiǎn)潔性和可讀性,編寫程序時(shí)普遍采用第一種方式。當(dāng)然,在同一段程序中,這兩種方式可以同時(shí)使用。

   NO.2 解決變量命名沖突的問題

   我們來看這樣一個(gè)例子:

#include<iostream>using namespace std;namespace name1{	int value = 1;//name1域內(nèi)對(duì)象}namespace name2{	int value = 2;//name2域內(nèi)對(duì)象}int value = 3;//全局變量int main(){	int value = 4;//局部變量	cout << name1::value << endl;	cout << name2::value << endl;	cout << value << endl;	getchar();	return 0;}

在這段程序中,有兩個(gè)域的域內(nèi)變量和全局、局部變量。程序執(zhí)行結(jié)果為:

由上圖可以看出:

1.加上域作用限定符可以訪問不同域中的成員變量,且變量名可以相同。

2.重名的全局和局部變量,編譯器優(yōu)先訪問局部變量,為了印證這一點(diǎn),在屏蔽掉局部變量后,程序執(zhí)行結(jié)果如下:

另外,如果不想用::限定符來訪問自己定義的命名空間,也可以在main函數(shù)前使用“using namespace +命名空間名”的方式來訪問。

  NO.3 命名空間的嵌套定義

  除了單獨(dú)使用外,命名空間還可以進(jìn)行嵌套定義,例如:

#include<iostream>using namespace std;namespace name1{	namespace name2	{		int value = 1;	}	int value = 2; }int main(){	cout << name1::value << endl;	cout << name1::name2::value << endl;	getchar();	return 0;}程序執(zhí)行結(jié)果大家已經(jīng)猜到了,沒錯(cuò),就是2和1。

** 一點(diǎn)題外話。。。**

這個(gè)程序:

#include<iostream.h>using namespace std;int main(){	cout << "Hello World" << endl;	getchar();	return 0}

   不會(huì)編譯通過,是因?yàn)?include<iostream.h>是C++比較老的庫, 而vc6.0仍然支持這個(gè)頭文件 ,但新的編譯器(如vs2008及以上)都不再支持,所以建議使用新庫的頭文件#include<iostream>。

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 鄂伦春自治旗| 仲巴县| 遂平县| 哈巴河县| 潜山县| 调兵山市| 邳州市| 乌什县| 化德县| 青河县| 泗阳县| 略阳县| 奉贤区| 平原县| 垫江县| 义乌市| 屏边| 班戈县| 县级市| 四会市| 上杭县| 遵化市| 中山市| 通许县| 库尔勒市| 临安市| 安达市| 武定县| 宽城| 布尔津县| 盐城市| 武义县| 刚察县| 岳普湖县| 镇原县| 武胜县| 乌审旗| 祁东县| 鄯善县| 同德县| 德江县|