它是個啥
-
硬核理解——“地基”
-
就像A小區有一棟樓房叫6#,B小區恰好也有,我們要去B小區的6#怎麼辦?所以要去的話就要加個前綴,我要去B小區的6#,這個A小區和B小區就是命名空間了
爲什麼需要有namespace
- 先來看個例子
// 微信朋友圈模塊,名字賊長
void wechat_moments_add_post(){}
// 使用namespace
namespace wechat{
namespace moments{
void add_post(){
}
}
}
-
將邏輯相關的標示符限定在一起,組成相應的命名空間
-
使整個系統模塊化,更加簡潔清晰
-
還解決了不同庫變量名稱相同的問題,避免命名衝突
使用風格
// 第一種
std::cout << "hello" << endl;
// 第二種 推薦這樣單個導入
using std::cout;
using std::endl;
using std::string;
// 第三種 導入標準庫組件,不推薦
// 寫demo才用,項目中不要,避免命名氾濫導致衝突
using namespace std;
-
在C++中,我們常用的頭文件爲不帶“.h”後綴的頭文件,而這些頭文件裏所包含和定義的標識符在std空間中,所以我們使用C++時經常需要加上
-
而原C語言的頭文件爲帶“.h”後綴的頭文件,這些頭文件裏所包含和定義的標識符在全局命名空間中,不需要聲明使用std空間
細節
- 允許跨名稱空間的重載