轉載:http://topic.csdn.net/t/20051020/11/4338811.html#
在大型軟體開發項目中,類型和函數名沖突是常有的事,如:定義專用類型時就常常不隻一次地使用相同的名字。為了避免這個問題。人們通常在代碼中使用不同的詞綴,由此造成代碼很難管理、使用、閱讀和編輯。碰到這種問題常常使人郁悶非常而且容易出錯。看看下面的代碼:
class string {
//這個類名雖然短小精幹,意思表達明确,但是它已經被别人使用,你不能再用它作為類名了!
//...
};
class CMYExclusive_string {
// 這倒是個較安全的名字,但是太冗長乏味。不斷重複這樣的名字會影響自己的心情。 // 況且這樣處理還是有名字沖突的可能
//...
}
為了較好地解決這個問題,C++ 提供了規定名字空間的手段,也就是用 namespaces 關鍵字。有了它,在自己代碼中規範地命名類型和函數的自由度就大多了,有了它,你就可以充分使類型和函數的命名簡潔、易于了解、使用友善和安全。進而擺脫了哪些在定義和聲明中冗長乏味的詞綴。你可以在名字空間中對類型或者函數進行分類,為類型和函數的使用系上安全帶,例如:
// 某個頭檔案 vckbaseExcelSoft.h
namespace vckbaseFSDUexcelSoft_ {
class string {
//...
};
class vector {
//...
};
//...etc.
}
接着可以象下面這樣存取類型資料:
#include "vckbaseExcelSoft.h"
void main() {
using namespace vckbaseFSDUexcelSoft_;
string s; // 引用 名字空間 vckbaseFSDUexcelSoft_裡的 string vckbaseFSDUexcelSoft_::string
// 下面又回到标準的 string
std::string mySTDstr;
}