1.3 使用std名稱空間
因?yàn)榻?jīng)常要用到std名稱空間中的元素,在此介紹兩種不同的可以直接使用這些元素的方法,這樣就不必總是使用std::前綴。
1.3.1 Game Over 2.0程序簡(jiǎn)介
Game Over 2.0程序的運(yùn)行結(jié)果和圖1-2所示的原始Game Over程序一模一樣,但是區(qū)別在于訪問std名稱空間中元素的方式。從Course Technology網(wǎng)站(www.courseptr.com/downloads)或本書合作網(wǎng)站(http://www.tupwk.com.cn/downpage)上可以下載到該程序的代碼。程序位于Chapter 1文件夾中,文件名為game_over2.cpp。
// Game Over 2.0
// Demonstrates a using directive
#include <iostream>
using namespace std;
int main()
{
cout << "Game Over!" << endl;
return 0;
}
1.3.2 使用using指令
與Game Over程序一樣,Game Over 2.0也以兩行注釋和用于輸出的iostream頭文件開始。但是接下來,我們看到了一行新的語句。
using namespace std;
using指令讓我們直接獲取std名稱空間中元素的訪問權(quán)。如果還是將名稱空間比作區(qū)號(hào),那么從上面語句開始,所有std名稱空間中的元素就如同本地電話號(hào)碼一樣。也就是說,無須加上區(qū)號(hào)(std::前綴)就可以訪問它們。
現(xiàn)在我們可以不加任何前綴就使用cout和endl。就目前而言,這似乎無足輕重。但如果要幾十甚至上百次地引用這些對(duì)象,這就非常有用了。
1.3.3 Game Over 3.0程序簡(jiǎn)介
還有另外一種實(shí)現(xiàn)Game Over 2.0的方法:將文件配置成不必每次顯式地使用std::前綴就可以訪問cout和endl。這正是將要在Game Over 3.0程序中展示的方法,Game Over 3.0顯示的文本和Game Over 2.0一模一樣。從Course Technology網(wǎng)站(www.courseptr.com/downloads)或本書合作網(wǎng)站(http://www.tupwk.com.cn/downpage)上可以下載到該程序的代碼。程序位于Chapter 1文件夾中,文件名為game_over3.cpp。
// Game Over 3.0
// Demonstrates using declarations
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout << "Game Over!" << endl;
return 0;
}
1.3.4 使用using聲明
3.0版本的Game Over程序使用了兩個(gè)using聲明。
using std::cout;
using std::endl;
通過明確聲明希望std名稱空間中的哪些元素對(duì)程序本地化,可以像程序Game Over 2.0一樣直接訪問它們。雖然這樣做與使用using指令比起來輸入量要更多一些,但優(yōu)勢(shì)在于清晰地指明了計(jì)劃使用的名稱空間中的元素。另外,這不會(huì)將無意使用的元素本地化。