日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

命名空间和模块化编程3

發(fā)布時(shí)間:2025/3/16 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 命名空间和模块化编程3 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

命名空間:

  地球人都知道,創(chuàng)建的每一個(gè)類(lèi)、函數(shù)和變量都只能在一定的區(qū)域內(nèi)使用。而我們所知道最大的區(qū)域是全局作用域,最小的區(qū)域是一個(gè)代碼塊,例如:

{int a = 20; } //a在此處已經(jīng)不存在

  隨著程序變得越來(lái)越復(fù)雜,全局作用城里的東西會(huì)越來(lái)越多,尤其是在使用外部函數(shù)庫(kù)時(shí)。
  這可能會(huì)演變成一個(gè)問(wèn)題:因?yàn)闆](méi)有兩樣?xùn)|西可以有同樣的名字。
  解決方案之一是給每個(gè)變量、函數(shù)和類(lèi)等取一個(gè)獨(dú)一無(wú)二的名字,但這可能很困難或很麻煩(因?yàn)殡S著一個(gè)程序代碼量的逐步增加,一個(gè)變量名可能會(huì)變成像"CountOfItemsInTheArray"醬紫才能不重復(fù))。

  這時(shí)候正是“命名空間”(namespace)的用武之地!
  命名空間其實(shí)就是由用戶定義的范圍,同一個(gè)命名空間里的東西只要在這個(gè)命名空間有獨(dú)一無(wú)二的名字就行了。
  因此,如果某個(gè)程序有許多不同的頭文件或已編譯文件,它們又各自聲明了許多的東西,命名空間可以為它們提供保護(hù)。

  創(chuàng)建命名空間的辦法很簡(jiǎn)單,先寫(xiě)出關(guān)鍵字namespace,再寫(xiě)出這個(gè)命名空間的名字,然后把這個(gè)命名空間里的東西全部括在一對(duì)花括號(hào)里就行了,如下所示:

namespace myNamespace {//全部東西 }

?

  注意在最末尾不需要加上分號(hào)哦。

  正如我們剛才講過(guò)的那樣,命名空間可以讓你隨用同一個(gè)標(biāo)識(shí)等而不會(huì)導(dǎo)致沖突:

namespace author {std:string person; }namespace programmer {std:string person; }

  代碼示例:http://www.runoob.com/cplusplus/cpp-namespaces.html

?

使用命名空間:

  如果某個(gè)東西是在命名空間里定義的,程序?qū)⒉荒芰⒖淌褂盟?/span>
  這正是命名空間的全部意義所在:把東西放在它們自己的小盒子里,不讓它們與可能有著相同名字的其他東西發(fā)生沖突。
  想要訪問(wèn)在某個(gè)命名空間里定義的東西,有三種方法可供選擇。

  • 第一種方法我們已經(jīng)用了很多遍了: std:: cout << "I love fishc. com!\n" ;
  • 第二種方法是使用using指令:

    using namespace std;

    執(zhí)行這條語(yǔ)句后,在std命名空間里定義的所有東西就都可以使用,我們便可以像下面直接使用:

    cout<<"I love fishc.com"

    不過(guò),把命名空間里的東西帶到全局作用域里,跟我們使用命名空間的本意相違背!所以不建議使用這種設(shè)計(jì)風(fēng)格。  

  • 最后一種方法是用一個(gè)using指令只把你需要的特定命名從命名空間提取到全局作用域:

    using std::cout; cout<<"I love fishc. com!\n";

    最后請(qǐng)務(wù)必注意:using指令的出現(xiàn)位置決定著從命名空間里提取出來(lái)的東西能在哪個(gè)作用域內(nèi)使用。如果你把它放在所有函數(shù)聲明的前面,他將擁有全局性,如果你把它放在某個(gè)函數(shù)里,那么它將只在這個(gè)函數(shù)里可以使用?! ?/span>



  • ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/tianqizhi/p/10497501.html

    總結(jié)

    以上是生活随笔為你收集整理的命名空间和模块化编程3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。