1.頭文件名像iostream這樣的文件叫做包含文件(include file)——由于它們被包含在其他文件中;也叫頭文件(header file)——由于它們被包含在文件起始處。C++編譯器自帶了很多頭文件,每個(gè)頭文件都支持一組特定的工具。C語(yǔ)言的傳統(tǒng)是,頭文件使用擴(kuò)展名.h,將其作為一種通過(guò)名稱標(biāo)識(shí)文件類型的簡(jiǎn)單方式。例如,頭文件math.h支持各種C語(yǔ)言數(shù)學(xué)函數(shù),但C++的用法變了。現(xiàn)在,對(duì)老式C的頭文件保留了擴(kuò)展名h(C++程序仍可以使用這種文件),而C++頭文件則沒(méi)有擴(kuò)展名。有些C頭文件被轉(zhuǎn)換為C++頭文件,這些文件被重新命名,去掉了擴(kuò)展名h(使之成為C++風(fēng)格的名稱),并在文件名稱前面加上前綴c(表明來(lái)自C語(yǔ)言)。例如,C++版本的math.h為cmath。有時(shí)c頭文件的C版本和C++版本相同,而有時(shí)候新版本做了一些修改。表1 頭文件命名約定2.命名空間 如果使用iostream而不是iostream.h,則應(yīng)使用下面的名稱空間編譯指令來(lái)使iostream中的定義對(duì)程序可用: using namespace std; 名稱空間支持是一項(xiàng)C++特性,目的是為了讓您編寫大型程序以及將多個(gè)廠商現(xiàn)有的代碼組合起來(lái)的程序時(shí)更容易,它還有助于組織程序,一個(gè)潛在的問(wèn)題是,可能使用兩個(gè)已封裝好的產(chǎn)品,而它們都包含一個(gè)名為wanda( )的函數(shù)。這樣,使用wanda( )函數(shù)時(shí),編譯器將不知道指的事哪個(gè)版本。名稱空間讓廠家能夠?qū)⑵洚a(chǎn)品封裝在一個(gè)叫做名稱空間的單元中,這樣就可以用名稱空間的名稱來(lái)指出想使用哪個(gè)廠商的產(chǎn)品。因此,Microflop Industries就可以將其定義放到一個(gè)名為Microflop的名稱空間中。這樣,其wanda( )函數(shù)的全稱為Microflop::wanda( );同樣,Piscine公司的wanda( )版本可以表示為Piscine::wanda( )。這樣,程序就可以使用名稱空間來(lái)區(qū)分不同的版本了: Microflop::wanda(“go dancing?”); Piscine::wanda(“a fish named Desire”); 按照這種方式,類、函數(shù)、和變量便是C++編譯器的標(biāo)準(zhǔn)組件,它們現(xiàn)在都被放置在名稱空間std中。僅當(dāng)頭文件沒(méi)有擴(kuò)展名h時(shí),情況才是如此。這意味著在iostream中定義的用于輸出的cout變量實(shí)際上時(shí)std::cout,而endl實(shí)際上是std::endl。因此,可以省略編譯指令using,以下述方式進(jìn)行編碼: std::cout << “Come up and C++ me some time.”; std::cout << std::endl; 下面的一行代碼表明,可以使用std名稱空間中定義的名稱,而不必使用std::前綴: using namespace std; 這個(gè)using編譯指令是的std名稱空間中的所有名稱都可用。這是一種偷懶的做法。更好地方法是,只使所需的名稱可用,這可以通過(guò)使用using聲明來(lái)實(shí)現(xiàn): using std::cout; using std::endl; using std::cin;