C++ 名稱空間(一些指導原則)

名稱空間的一些指導原則:

  1. 使用在已命名的名稱空間中聲明的變量,而不是使用外部全局變量。
  2. 使用在已命名的名稱空間中聲明的變量,而不是使用靜態(tài)全局變量。
  3. 如果開發(fā)了一個函數(shù)庫或類庫,將其放在一個名稱空間中。事實上,C++ 當前提倡將標準函數(shù)庫放在名稱空間 std 中,這種做法擴展到了來自C語言中的函數(shù)。例如,頭文件 math.h 是與 C 語言兼容的,沒有使用名稱空間,但 C++ 頭文件 cmath 應將各種數(shù)學庫函數(shù)放在名稱空間std中。
  4. 僅將編譯指令 using 作為一種將陳舊代碼轉換為使用名稱空間的權宜之計。
  5. 不要在頭文件中使用 using 編譯指令。首先,這樣做掩蓋了要讓哪些名稱可用;另外,包含頭文件的順序可能影響程序的行為。如果非要使用 using 編譯指令,應將其放在所有預處理器編譯指令 #include 之后。
  6. 導入名稱時,首選使用作用域解析操作符或 using 聲明的方法。
  7. 對于using聲明,首先將其作用域設置為局部而不是全局。

未命名的名稱空間:

namespace
{
         int  zdsCool;
         int  zdsHot;
}

這就像后面跟著 using 編譯指令一樣,也就是說,在該名稱空間中聲明的名稱的潛在作用域為:從聲明開始點到聲明區(qū)域末尾。從這方面看,它們與全局變量相似。不過,由于這種名稱空間沒有名稱,因此不能顯示的使用 using 編譯指令或 using 聲明來使它在其它位置都可用。具體地說,不能在未命名名稱空間所屬文件之外的其他文件中,使用該名稱空間中的名稱,因此該方法可替代鏈接性為內(nèi)部的靜態(tài)變量。實際上,C++ 標準不贊成在名稱空間和全局作用域中使用關鍵字 static(該標準使用“不贊成”表明,這種做法,目前合法,但以后很可能將其視為非法)。例如,下面代碼:

static int  nCount;

int fun1();

int main()
{
         …
}

int fun1()
{
         …
}

C++ 標準的意思是,程序員應該這樣做:

namespace
{
         int  nCount;
}

int fun1();

int main()
{
         …
}

int fun1()
{
         …
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 8,107評論 0 27
  • { "Unterminated string literal.": "未終止的字符串文本。", "Identifi...
    栗子雨閱讀 8,068評論 0 3
  • 本文轉載自:C++ 命名空間namespace 在C++中,名稱(name)可以是符號常量、變量、宏、函數(shù)、結構、...
    Yihulee閱讀 5,131評論 0 6
  • 淺水逐新綠, 疏柳眺遠山。 郊外春來早, 暖風使人酣。 桃花正吐蕊, 櫻花初嬌艷。 更待春雨后, 繽紛滿人間。
    鑿冰而釣閱讀 331評論 0 0

友情鏈接更多精彩內(nèi)容