頭文件iostream與命名空間namespace

對 #include <iostream.h>非標準輸入輸出流
    #include <iostream>標準輸入輸出流
    C++中爲了避免名字定義衝突,特別引入了“名字空間的定義”,即namespace。當代碼中用<iostream.h>時,輸出可直接引用cout<<x;//<iostream.h>繼承C語言的標準庫文件,未引入名字空間定義,所以可直接使用。當代碼中引入<iostream>時,輸出需要引用std::cout<<x;如果還是按原來的方法就會有錯。使用<iostream>時,引入std::有以下方法:

1.using namespace std;
   cout<<x;

2.using std::cout;的如同全局變量和局部變量一樣的用法,
   cout<<x;
3.最基本的std::cout<<x;

這回你該知道爲什麼通常用#include <iostream>時,要用using namespace std;了吧。如果你不用這個,就要在使用cout時,用後兩種方法了。其他頭文件也是同樣的道理。

    C++標準庫中中的所有標識符都被定義於一個名爲std的namespace中。如同名字一樣的意思,NameSpace(名字空間),之所以出來這樣一個東西,是因爲人類可用的單詞數太少,並且不同的人寫的程序不可能所有的變量都沒有重名現象,對於庫來說,這個問題尤其嚴重,如果兩個人寫的庫文件中出現同名的變量或函數(不可避免),使用起來就有問題了,爲了解決這個問題,引入了名字空間這個概念,通過使用 namespace xxx;你所使用的庫函數或變量就是在該名字空間中定義的,這樣一來就不會引起不必要的衝突了。(也即是說,namespace相當於大庫中的小庫),使用時,如同全局變量和局部變量一樣的用法:

#include <iostream>
using namespa的如同全局變量和局部變量一樣的用法,ce std ;
namespace savitch1
{
    void greeting();
}
namespace savitch2
{
    void greeting();
}

void big_greeting();
int main()
{
    {
        using namespace savitch2 ;
        //使用savictch2、std、全局三個命名空間
        greeting();
    }

    {
        using namespace savitch1 ;
        //使用savitch1、std、全局三個命名空間
        greeting();
    }
    big_greeting();
    //使用了std和全局兩個命名空間  
    return0 ;
}

namespace savitch1
{
    void greeting()
    {
        cout<<"Hellofromnamespacesavitch1.\n" ;
    }
}

namespace savitch2
{
    void greeting()
    {
        cout<<"Greetingsfromnamespacesavitch2.\n" ;
    }
}

void big_greeting()
{
    cout<<"ABigGlobalHello!\n" ;

}



發佈了14 篇原創文章 · 獲贊 14 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章