C ,為什麼有了include iostream ,還需要using namespace std呢?

時間 2022-01-04 22:07:14

1樓:SnowyLake

using namespace std只是為了將std::endl寫法簡化為endl而做的工作,同樣的效果你也可以通過using std::endl來實現。

你需要弄明白的乙個概念是:

endl和std::endl未必就是一種東西,甚至很有可能不是一種東西。

2樓:知乎首席男德帶師

@胖子我們知道std是定義在iostream library中的,如圖1所示

圖1然後,我將圖2的程式進行編譯,可以通過。

圖2將圖3的程式進行編譯,卻無法通過。

圖3我認為由於std定義在iostream中,且我沒有include,所以圖2和圖3都應該編譯不成功,但結果卻和我所料的不同。為什麼std明明定義在iostream中,我沒有包含iostream,圖2編譯卻可以通過呢?

上面這個問題解決了,原來是每個標準標頭檔案都包含了std的一部分,iostream中有一部分std,所有的標準標頭檔案裡的部分std組成了總體的std,所以std這個命名空間比較特殊。我的理解對嗎

還有乙個問題就是:假如我將自己的業務分為了兩個子業務,分給了兩個公司去做。乙個公司給我提供了標頭檔案headerA.

h, 其中有int num = 5,放在命名空間ABC中; 另乙個公司給我提供了標頭檔案headerB.h,其中有int num = 10,碰巧這個公司也放在命名空間ABC中。

那這樣子我包含了兩個標頭檔案,不還是沒有解決命名衝突的問題嗎,如圖4?

圖4上面這個問題,應該是我想得比較極端了,現實情況應該不會這麼巧合。。。

為什麼 C 有指標了還要引用?

airtrack 這個在 C 語言的設計與演化 上面有詳細說明,原因就是為了支援操作符過載。對於很多C 語法為什麼這麼設計都可以在這本書上找到答案。 Berry Geek 因為引用是編譯器層的東西,編譯完後並不會占用真正的記憶體.而指標是個資料,是要單獨占用記憶體儲存的.更新一下 說 引用編譯玩後不...

PowerShell 為什麼 alias 了 curl 就引起了如此大的爭議?

微軟這是在強x使用者,正常的curl help會打出幫助 瞧瞧微軟都幹了些神馬 分明就是佔著茅坑不拉屎的行為,還強塞在 C Windows System32 curl.exe 我自己安裝個curl都被這優先順序覆蓋了,並且強塞那個還被系統保護了起來,改個名字都不行pwsh我不跟你玩了好吧,叛逃到 b...

為什麼有C語言 有C 卻沒有C 語言?

Alds Nick C 這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為 new C 之後是 C with Classes 在電腦科學中,C 仍被稱為C語言的上層結構。它最後得名於C語言中的 操作符 其對變數的值進行...