c 什麼時候用 std

2021-09-24 06:12:44 字數 1196 閱讀 2289

文章寫的很透徹,想儲存下來供以後檢視方便

std::是命名空間,你所用到的很多函式或者類都是被放到命名空間裡面的,命名空間是防止名字重複而使用的,比如stl有個類叫string,而你也設計乙個類叫string,那麼編譯器編譯的時候就搞不清楚到底是那個string,所以用乙個命名空間就比較方便了。具體是這麼回事的,比如有兩個班級,a班和b班,兩個班各有乙個叫張三的人,而兩個班的同學相互之間都是非常熟悉的。那麼他們聊天的時候說張三,那其他人肯定會問,哪個張三?對吧,因為搞不清楚到底說的是哪個,所以會犯迷糊。而這個時候,那個人會補充,a班的張三或者b班的張三,這樣,其他人就知道到底是誰了。這裡的a班,b班就好像命名空間一樣,而張三就好像那個string,或者說是物件,變數或者函式。

當你自己定義乙個string並把它放到命名空間aaa中的時候,你使用string只要指定是哪個命名空間的,就不會導致編譯器分不清是哪個string了。你使用時會用std::string或者aaa::string,前者告訴編譯器我用的string是在命名空間std裡面的,後者告訴編譯器用的string是在命名空間aaa裡面的。這樣,編譯器就一目了然,不會出錯。但是你卻發現每次只要用到string都必須在前面加上aaa,這樣相當麻煩,有沒有辦法簡化操作呢?當然有,就好像上面的例子,那些人聊天之前,他可以告訴其他人說,注意,下面說到張三都是說的b班的,那麼其他人就知道,後面只要出現張三都是在說b班的,不是a班的了。很多文章裡面也有這樣的情況啊,一般註明是以下簡稱什麼什麼的,就是為了避免重複,導致混淆。而程式一樣的,你可以先告訴編譯器你用的string是哪個命名空間的。就要用到這句了。using namespace std;這樣告訴編譯器,我沒有指定命名空間的,就預設使用std這個命名空間,那麼你使用string就不用再加std::作用域了。只需要直接寫string就可以了,編譯器就知道你說的是哪個string了。這就是命名空間的作用。

補充:std是乙個類(輸入輸出標準),它包括了cin成員和cout成員,using name space std ;以後才能使用它的成員。#include中不存在類std,但是有cin,out的相關函式,不需要使用命名空間了。而第二種標準#include,它包含了乙個類,在類的使用之前要預處理一下,using namespace std;就是這個功能,然後你就可以使用cin,cout這兩個成員函式了,假設你不使用預處理(using namespace std;),麻煩加上std::cin或者std::cout再去使用它的成員函式(標頭檔案中存在這個類)

在c 中, 什麼時候用 什麼時候用

在某種意義上,和 是意思相對的兩個東西,把它們放在一起有什麼意義呢?為了理解指標的這種做法,我們先複習一下c c 程式設計中無所不在的指標概念。我們都知道myclass 的意思 指向某個物件的指標,此物件的型別為myclass。void func1 myclass pmyclass 例如 mycla...

什麼時候用exists 什麼時候用in

in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...

什麼時候用GET?什麼時候用POST?

get和post兩種方法都是將資料送到伺服器,但你該用哪一種呢?http標準包含這兩種方法是為了達到不同的目的。post用於建立資源,資源的內容會被編入http請示的內容中。例如,處理訂貨表單 在資料庫中加入新資料行等。當請求無 時 如進行搜尋 便可使用get方法 當請求有 時 如新增資料行 則用p...