命名空間(namespace)

1、命名空間(namespace)

使用命名空間的目的是爲了避免命名衝突,在C++中,變量、函數和類都是大量存在的。如果沒有命名空間,這些變量、函數、類的名稱將都存在於全局命名空間中,會導致很多衝突。比如,如果我們在自己的程序中定義了一個函數toupper(),這將重寫標準庫中的toupper()函 數,這是因爲這兩個函數都是位於全局命名空間中的。命名衝突還會發生在一個程序中使用兩個或者更多的第三方庫的情況中。此時,很有可能,其中一個庫中的名 稱和另外一個庫中的名稱是相同的,這樣就衝突了。這種情況會經常發生在類的名稱上。比如,我們在自己的程序中定義了一個Stack類,而我們程序中使用的某個庫中也可能定義了一個同名的類,此時名稱就衝突了。

namespace關鍵字通過創建作用範圍來對全局命名空間進行分隔,定義命名空間的基本形式如下:

namespace 名稱{//聲明}
在命名空間中定義的任何東西都侷限於該命名空間內,

在命名空間中聲明的標識符是可以直接被該命名空間中的函數引用的,而不需要加對應的命名空間修飾符。

相同的命名空間名稱是可以被多次聲明的,從而使得命名空間可以被分割到幾個文件中甚至是同一個文件的不同地方。例如:

namespace NS
{
	int i;
}

namespace NS
{
	int j;
}
其中命名空間NS被分割成兩部分,但是兩部分的內容卻是位於同一命名空間NS中的。

命名空間是可以嵌套的:也就是說可以在一個命名空間內部聲明另外的命名空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章