C++的命名空間namespace

它是個啥

  • 硬核理解——“地基

  • 就像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空間

細節

  • 允許跨名稱空間的重載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章