C++?命名空間?using聲明使用示例詳解
正文
c++在開發(fā)的過(guò)程當(dāng)中需要使用到庫(kù)函數(shù),那么基于庫(kù)函數(shù)的使用最初的流程是:1、include 相關(guān)的頭文件,比如:iostream,string。 2、使用命名空間::庫(kù)函數(shù),比如:std::cin,std::cout,但是這樣寫總是有點(diǎn)麻煩的,所以可以嘗試簡(jiǎn)化寫法,就是using聲明。
注意,這里的 :: 是作用域運(yùn)算符,就是用來(lái)指向命名空間空間當(dāng)中的方法的。
最初的c++代碼寫法
#include <iostream> int main(){ std::cout << "hello world" << std::endl; return 0; }
在這段代碼當(dāng)中,我們引入了iostream文件,cout和endl函數(shù)在iostream下的std當(dāng)中,所以需要采用std::cout和std::endl的方法使用功能。
但是如果代碼量巨增,這樣的寫法還是繁瑣的,那么這個(gè)時(shí)候就可以采用using方法了,代碼如下:
#include <iostream> int main(){ using std::cout; using std::endl; cout << "hello world" << endl; return 0; }
這段代碼當(dāng)中,比上面的代碼多了兩行using方法,但是如果下面使用cout和endl方法的語(yǔ)句比較多的話,就可以省力很多了。但是上面的寫法必須把所有的需要的方法都顯式的聲明出來(lái),比如:
#include <iostream> int main(){ using std::cout; cout << "hello world" << endl; return 0; }
這里聲明了cout,但是在使用的過(guò)程當(dāng)中,除了count還使用了endl,那么這個(gè)時(shí)候是會(huì)報(bào)錯(cuò)的
main.cpp: In function ‘int main()': main.cpp:5:29: error: ‘endl' was not declared in this scope cout << "hello world" << endl; ^ main.cpp:5:29: note: suggested alternative: In file included from /usr/include/c++/4.8.2/iostream:39:0, from main.cpp:1: /usr/include/c++/4.8.2/ostream:564:5: note: ‘std::endl' endl(basic_ostream<_CharT, _Traits>& __os) ^
那么有沒(méi)有更加簡(jiǎn)單的寫法,我們可以嘗試直接using 整個(gè)std
#include <iostream> int main(){ using namespace std; cout << "hello world" << endl; return 0; }
那么我們來(lái)聊聊using到底是干什么的:
在聊using之前,先搞清楚一個(gè)概念,就是命名空間,命名空間是C++引入的可以由用戶命名的作用域,用來(lái)處理程序中常見(jiàn)的同名沖突。而作用域就是定義一個(gè)量,這個(gè)量在代碼當(dāng)中起作用的范圍。
那么接下來(lái)看using,using是用來(lái)聲明命名空間的,聲明命名空間實(shí)際上就是把指定的標(biāo)識(shí)符加載到當(dāng)前的作用域當(dāng)中,直接使用。
但是這里有幾個(gè)思考的點(diǎn):
1、在學(xué)習(xí)c++的時(shí)候有一類文件叫做頭文件,就比如剛才案例當(dāng)中導(dǎo)入的iostream,在這類文件當(dāng)中盡量不要使用using,因?yàn)閬?lái)回包括太多隱式的變量,容易導(dǎo)致變量沖突。
2、using聲明的一定要是include加載的,所以要卸載include的后面。
3、using寫在代碼的不同位置,產(chǎn)生的效用也是不一樣的,這個(gè)需要結(jié)合作用域來(lái)詳細(xì)理解(挖個(gè)坑,后來(lái)填上)
4、個(gè)人感覺(jué)using std::cout 寫法上確實(shí)比 using namespace std要繁瑣,但是使用的變量更加精確,因?yàn)閡sing namespace std調(diào)用命名空間std內(nèi)定義的所有標(biāo)識(shí)符,其實(shí)代碼當(dāng)中沒(méi)有用到那么多。
關(guān)于using先總結(jié)這么多,更多關(guān)于C++ 命名空間using聲明的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言入門篇--初識(shí)C語(yǔ)言及數(shù)據(jù)類型
本篇文章是c語(yǔ)言基礎(chǔ)篇,主要為大家介紹了C語(yǔ)言的基本類型,為大家介紹了什么是C語(yǔ)言,希望可以幫助大家快速入門c語(yǔ)言的世界,更好的理解c語(yǔ)言2021-08-08老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)
下面小編就為大家?guī)?lái)一篇老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08c語(yǔ)言生成隨機(jī)數(shù)的方法(獲得一組不同的隨機(jī)數(shù))
c語(yǔ)言生成一組不同的隨機(jī)數(shù),大家參考使用吧2013-12-12用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10