C++中的頭文件#include和標準命名空間 using namespace std

#include <iostream>
using namespace std

在最開始接觸C++的時候,我始終不明白爲什麼在所有程序開頭都要加上這兩句,隨着後續對類的理解,以及其他語言比如python的學習,慢慢的就能夠理解了。

這兩行代碼旨在簡化程序,一般來說編譯器都能夠識別這兩句,否則說明編譯器不遵循C++98標準,實際上如果不加這兩句代碼也是可以的,但是需要對後續的代碼進行相應的修改。

頭文件
#include <iostream>實際上是一個預處理語句,該編譯指令會將iostream文件的內容加到我們寫的這個程序當中,也就是說我們所編寫的程序實際上要和一個寫好的文件結合起來,在編譯的時候就會將這個iostream中的內容替換掉這一句,相當於作文頭幫我們寫好了,我們只要接着往下寫就可以。那麼這個iostream到底代表什麼呢?io實際上指的是輸入和輸出,stream是流,合起來就是輸入輸出的數據流,iostream文件中有多個定義可以幫助我們實現信息的輸入和輸出,比如說cout和cin,加上iostream後我們就可以使用這兩個語句用來輸入輸出。

在C中頭文件都是.h結尾的,但是在C++中,通常用c來表示,比如說math.h變成cmath,iostream.h在舊風格的C++中有使用,但是現在一般都不用了,加不加.h後綴實際上只是一個風格的不同,沒有本質的區別。

命名空間
但是如果我們用的是iostream而不是iostream.h就需要在後面加上

using namespace std

命名空間有助於我們在編寫大型程序時或者將各個廠商的代碼組合起來時更加容易,比如說兩個公司都寫了一個叫wanda()的函數,但是作用是不相同的,那麼我們在程序中直接調用wanda()的時候怎麼分辨出調用的是哪個wanda()呢?這就需要我們就需要用命名空間來指定我們調用的是哪個函數。A公司的wanda()我們可以把它的定義放到一個名爲A的命名空間中,這樣我們使用A的wanda()可以寫成A::wanda(),同理也可以用B::wanda()調用另一個函數。
理解了這個我們再來看std,std實際上是C++自身提供給我們的一個命名空間,如果我們不指定使用標準命名空間,那我們在後續使用cin、cout等指令的時候就需要寫成std::cout或std::cin,當添加了using namespace std之後就說明我們用的是哪裏的函數,這樣就可以省略std::了,默認使用的就是這裏面的函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章