文章為自己的學(xué)習(xí)總結(jié),如有不對之處還望之處~
名稱空間對于絕大多數(shù)的C++入門書籍來說,第一個程序可能都和下面的這個程序類似:
#include <iostream>using namespace std;?int main(){ cout << "Hello World!
";}
這個程序主要可分成三部分:
1.預(yù)處理指令#include
2.編譯指令 using namespace
3.main()函數(shù)
對于學(xué)過C語言的小伙伴來說預(yù)處理指令和main()函數(shù)都應(yīng)該很熟悉了,而這個編譯指令 using namespace有什么呢?我剛看到的時候也是一頭霧水。
C++頭文件C語言的頭文件是以.h結(jié)尾的,而上面的程序卻并沒有,但是實際上C++也是支持C語言頭文件的寫法的,不過那屬于舊式風(fēng)格了,C++的新式風(fēng)格是不需要寫.h擴(kuò)展名的,但是我們需要使用名稱空間編譯指令來使iostream 中的定義對程序可以,簡單說來就是需要增加一條代碼:
using namespace std;名稱空間
名稱空間支持是一項C++的特性,主要是為了使得程序員們在編寫大型程序以及將多個廠商現(xiàn)有的代碼組合起來的程序時更容易。
舉個簡單的例子,當(dāng)你需要使用兩個都已經(jīng)封裝好的產(chǎn)品時,并且它們都含有一個名為fun()的函數(shù),這樣在使用fun()函數(shù)的時候,編譯器將不知道指的是班哪一個版本的fun()函數(shù)。名稱空間能夠讓廠商將其產(chǎn)品封裝在一個叫做名稱空間的單元中,這樣就可以用名稱空間的名稱來指出想使用哪個廠商的產(chǎn)品。如Alibaba可以將函數(shù)定義在一個名為Alibaba的名稱空間中。這樣其fun()函數(shù)的全稱就為Alibaba::fun();同樣Tencent公司的函數(shù)可以表示為Tencent::fun()。如此一來,程序就可以使用名稱空間來區(qū)分不同的版本了:
Alibaba::fun("children.");Tencent::fun("women.");
通過這種方式,類、函數(shù)和變量便是C++編譯器的標(biāo)準(zhǔn)組件,它們現(xiàn)在都被放置在名稱空間std中。對于頭文件來說,僅包含沒有擴(kuò)展名h的時候。
如此一來我們就知道程序中的cout其實是std::cout,endl其實是std::endl,當(dāng)不使用using編譯指令時,程序就可以這樣寫:
std::cout << "Hello, world.";std::cout << std::endl;
然后,多數(shù)程序員都不喜歡這樣編寫,你可以很清楚的知道原因,這意味著我們在需要使用名稱空間代碼的使用總是需要添加上那么一點點代碼,這很煩。于是乎,using指令應(yīng)運(yùn)而生,通過下面一條指令,我們就可以使用在名稱空間std中定義的名稱,而不必使用std::前綴:
using namespace std;
這個指令使得std名稱空間中的所有名稱都可用。這是一種偷懶的做法,但是在大型項目中,這會有一個潛在的問題。更好的方法是,只是所需的名稱可用,如:
using std::cout;using std::endl;using std::cin;
使用上面的編譯指令來替代using namespace std;,便可以使用cout和endl,而不必添加std::前綴。
但是使用iostream中其他名稱時,依然需要加上std::前綴,除非你將它們分別添加到using列表中。
當(dāng)然,對于我們這些初學(xué)者來說,直接使用偷懶的辦法即可,因為對于我們所編寫的簡單程序來說,采用何種名稱空間管理辦法都無關(guān)緊要。
小結(jié)
以上就是關(guān)于using指令的簡單解讀,如有不對之處,歡迎之處。
本文發(fā)布于:2023-02-28 21:22:00,感謝您對本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/1677751770111426.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。
本文word下載地址:空間名稱大全(空間名稱大全霸氣).doc
本文 PDF 下載地址:空間名稱大全(空間名稱大全霸氣).pdf
| 留言與評論(共有 0 條評論) |