筆記2 C 命名空間 標準命名空間std

2021-09-25 04:38:48 字數 2123 閱讀 7443

一、引子

乙個中大型軟體往往由多名程式設計師共同開發,會使用大量的變數和函式,不可避免地會出現變數名或函式名的命名衝突。當所有人的**測試通過,結合在一起時就有可能會造成命名衝突。

例如:小李和小韓都參與了乙個檔案管理系統的開發,它們都定義了乙個全域性變數fp,用來指明當前開啟的檔案,當他們**結合在一起時。很明顯,編譯器會提示fp重複定義。

為了解決合作開發的命名衝突的問題,c++引入了命名空間(namespace)的概念。

諸如:

namespace li//李定義的變數fp

namespace wang//王定義的變數fp

namespace是c++關鍵字

,用來定義乙個命名空間

。語法格式為:

namespace

namespace nsb//nsb的命名空間

; int a = 1997;//和乙個和nsb同名的整形變數a

}}namespace nsc

//如何初始化和使用它們呢?

//如下所示:

main(void)

//區域性作用域

3.xia:://使用網域名稱解析操作符

c++命名空間比較複雜,我在這裡學習的僅僅是冰山一角。後面在學習中我會一步一步的摸索與學習。

三、c++標頭檔案和標準命名空間std

以上是命名空間的簡介,也是使用標準命名空間的基礎知識。標準命名空間也是說在後期的c++編碼中經常會使用到的**了:

using namespace std;
早期的c++是在c語言的基礎上開發的,早期還不太完善,更不支援命名空間,沒有自己的編譯器,而是將c++**翻譯成c**,再通過c編譯器完成編譯的。

此外嗎,c++還開發了一些新的庫,增加了自己的標頭檔案,諸如:

iostram.h  用於控制台的輸入輸出

fstream.h 用於檔案操作

complex.h用於複數計算

後來c++引入了命名空間,計畫重新將庫,類,函式,巨集等都納入乙個命名空間中。這個命名空間的名字就是std。---標準命名空間

為了避免重名,c++庫對頭檔名稱也做了調整,去掉了字尾 .h 。所以老式的iostream.h變成了新的iostream。原來c語言中的stdio.h

變成了cstdio; stdlib.h變成了cstdlib。

如何使用:

#include int main()

#include int main()

這兩種方式,在編譯器中都能通過,也就是說大部分編譯器在實現時沒有嚴格遵循c++標準,程式設計師可以使用std,也可以不使用std。

只不過,第一種標準的,第二種不標準。

標準命名空間的作用域:

#include #include #include int add(int n)

cout<<"n = "<>str;

cout<<"input age:"<>age;

//std::printf("%s %d\n", str, age);

cout<<"str is "《一旦使用了標準命名空間,新版支援的標準c庫就不能用std::printf()使用了編譯器g++不會報錯,會報警告 執行時將出現非法指令的錯誤std::printf("%s %d\n", str, age);

//使用標準命名空間 但是標準寫法printf("%s %d\n", str, age);//不使用std 是不標準的寫法 但編譯器不會報錯。

using namespace std; 它宣告了命名空間std,後續如果有未指定的命名空間符號那麼預設使用std。諸如:cin、cout都位於命名空間std

四、總結

在很多例子中,std是直接宣告在全域性的,是為了後面使用函式方便;但是在中大型專案開發中是不被推薦的,這樣做增加命名衝突的風險。

spring p命名空間 c命名空間

p命名空間 1.需要引入命名空間p 並不真實存在 是在spring內部中實現的 xmlns p 2.如果是引用注入需要加 ref字尾 p和c命名空間 並不適用於集合引數 c命名空間 1.需要引入命名空間c 並不真實存在 是在spring內部中實現的 xmlns c 2.可以使用c 引數名 或c 引數...

C 標準命名空間std

輸入輸出要用到這個.標準c 庫的所有的識別符號都是在乙個名為std的命名空間中定義的,或者說標準標頭檔案 如iostream 中函式 類 物件和類模板是在命名空間 std中定義的。std是standard 標準 的縮寫,表示這是存放標準庫的有關內容的命名空間。二元作用域分辨運算子 using std...

C 命名空間 預設命名空間與匿名命名空間

2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...