命名空间和模块化编程3
命名空間:
地球人都知道,創(chuàng)建的每一個類、函數(shù)和變量都只能在一定的區(qū)域內(nèi)使用。而我們所知道最大的區(qū)域是全局作用域,最小的區(qū)域是一個代碼塊,例如:
{int a = 20; } //a在此處已經(jīng)不存在 隨著程序變得越來越復雜,全局作用城里的東西會越來越多,尤其是在使用外部函數(shù)庫時。
這可能會演變成一個問題:因為沒有兩樣東西可以有同樣的名字。
解決方案之一是給每個變量、函數(shù)和類等取一個獨一無二的名字,但這可能很困難或很麻煩(因為隨著一個程序代碼量的逐步增加,一個變量名可能會變成像"CountOfItemsInTheArray"醬紫才能不重復)。
這時候正是“命名空間”(namespace)的用武之地!
命名空間其實就是由用戶定義的范圍,同一個命名空間里的東西只要在這個命名空間有獨一無二的名字就行了。
因此,如果某個程序有許多不同的頭文件或已編譯文件,它們又各自聲明了許多的東西,命名空間可以為它們提供保護。
創(chuàng)建命名空間的辦法很簡單,先寫出關鍵字namespace,再寫出這個命名空間的名字,然后把這個命名空間里的東西全部括在一對花括號里就行了,如下所示:
namespace myNamespace {//全部東西 }?
注意在最末尾不需要加上分號哦。
正如我們剛才講過的那樣,命名空間可以讓你隨用同一個標識等而不會導致沖突:
namespace author {std:string person; }namespace programmer {std:string person; }代碼示例:http://www.runoob.com/cplusplus/cpp-namespaces.html
?
使用命名空間:
如果某個東西是在命名空間里定義的,程序?qū)⒉荒芰⒖淌褂盟?/span>
這正是命名空間的全部意義所在:把東西放在它們自己的小盒子里,不讓它們與可能有著相同名字的其他東西發(fā)生沖突。
想要訪問在某個命名空間里定義的東西,有三種方法可供選擇。
第二種方法是使用using指令:
using namespace std;執(zhí)行這條語句后,在std命名空間里定義的所有東西就都可以使用,我們便可以像下面直接使用:
cout<<"I love fishc.com"不過,把命名空間里的東西帶到全局作用域里,跟我們使用命名空間的本意相違背!所以不建議使用這種設計風格。
最后一種方法是用一個using指令只把你需要的特定命名從命名空間提取到全局作用域:
using std::cout; cout<<"I love fishc. com!\n";最后請務必注意:using指令的出現(xiàn)位置決定著從命名空間里提取出來的東西能在哪個作用域內(nèi)使用。如果你把它放在所有函數(shù)聲明的前面,他將擁有全局性,如果你把它放在某個函數(shù)里,那么它將只在這個函數(shù)里可以使用。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/tianqizhi/p/10497501.html
總結
以上是生活随笔為你收集整理的命名空间和模块化编程3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你确定你真的理解“双亲委派“了吗?!
- 下一篇: 设置Django关闭Debug后的静态文