2016/5/11

C++的#include <iostream> 與名稱空間namespace

前言:
這篇主要是討論C++底層的一些觀念的東西。
我覺得在學一個新東西前,一定要先了解他的來由始末,而不是只懂皮毛,初學者也別小看C++一開始的Hello World,這麼一小段程式背後還是有很多東西可以學,至少要懂它每段語法結構,和它運作的概念。
ps..這篇文章實際標題是C++的#include &lt;iostream&gt; 與名稱空間namespace,因為<iostream>含特殊字元,不然不能直接顯示出來,幸好上次有碰過這問題,所以這網站真的好用。

來看Hello World:
#include <iostream>
using namespace std;
int main(){
    cout << "Hello world!" << endl;
    return 0;
}
先來講講第二行namespace這東西,這叫名稱空間,它主要傭來管理C++中命名重複的問題,設今天一個班級有兩個人都叫小王,老師點名誰知道是誰?C++不允許這情況發生,所以才出現了namespace。

using namespace std;
就是引入標準函式庫,而標準函式庫是放在std這namespace當中,如果我們要使用cout,就必須以 std::cout 的方式去呼叫,編譯器才知道要去要到std裡面去找std的cout。

但每次用都要打std::很麻煩!!
所以後面就直接using namespace std; 這樣以後就不用加std::就能使用cout
通常一個C++程式也一定會有這一行,不然後面cout 不能使用,就不能印出東西。

using有兩種用法:
  1. using 名稱空間::成員
  2. using namespace 名稱空間
我們也可使用第一種,這樣using namespace::cout,一樣不用打cout,但這樣其他有的不就不能用了?因為你只引進cout而已...

至於#include <iostream>
這行也是必須的,這是讓編譯器去呼叫位於iostream當中標準資料流I/O程式庫宣告式,如果你要做數學運算,則需要使用 #include 的函式庫。

參考資料:
C++ 的命名空間
良葛格-名稱空間(Namespace)

沒有留言:

張貼留言