c類、名稱空間、內(nèi)部空間的作用域(筆記總結(jié)).docx
-
資源ID:9118377
資源大?。?span id="3c8lmua" class="font-tahoma">41.34KB
全文頁數(shù):4頁
- 資源格式: DOCX
下載積分:9.9積分
快捷下載
會(huì)員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。
|
c類、名稱空間、內(nèi)部空間的作用域(筆記總結(jié)).docx
名稱空間作用域名稱空間中實(shí)體的作用域是全局的(相對(duì)于名稱空間是全局的),并不意味著其可見域也是全局的,如果不使用作用域限定符:和using機(jī)制,拋開名稱空間嵌套和內(nèi)部屏蔽的情況,實(shí)體的可見域是從實(shí)體創(chuàng)建到該名稱空間結(jié)束(如果有名稱空間的嵌套,則內(nèi)部名稱空間中的實(shí)體可能會(huì)屏蔽外部名稱空間中的實(shí)體,這在稍后會(huì)講到),在名稱空間外,該實(shí)體是不可見的.在某個(gè)名稱空間中定義或創(chuàng)建的程序?qū)嶓w,如果要在其他名稱空間中或外部函數(shù)中訪問,必須使用作用域限定符:或使用using聲明機(jī)制來使實(shí)體可見名稱空間可嵌套命名,局部優(yōu)先原則。至于using聲明語句將該實(shí)體的可見域擴(kuò)展到什么程度,這取決于using語句的書寫位置,換言之,這取決于using語句的可見域。寫到另一個(gè)名稱空間中,則只在這個(gè)名稱空間中進(jìn)行擴(kuò)展。寫到外部空間則在外部空間擴(kuò)展。還有個(gè)using編譯擴(kuò)展方式,與using聲明方式的區(qū)別是:using聲明對(duì)名稱空間某個(gè)實(shí)物進(jìn)行擴(kuò)展,using編譯對(duì)名稱空間所有實(shí)物進(jìn)行擴(kuò)展; using A:num; using B:num; using namespace A; using namespace B;名稱空間嵌套:名稱空間可以定義在另一個(gè)名稱空間內(nèi),以單層嵌套為例,要訪問內(nèi)部名稱空間中的實(shí)體,必須采用“外部名稱空間:內(nèi)部名稱空間:實(shí)體名”的形式,如果是多層嵌套,還要多次使用作用域限定符如下圖示:類的作用域類定義作用域:從類定義結(jié)束開始,到從外面包圍類定義的塊結(jié)束(若類定義外無包圍塊,則結(jié)束于文件)使用類的程序員在類定義作用域下編程類定義作用域?yàn)榘惗x的花括號(hào)語句塊,如果沒有花括號(hào)語句塊,則為從類定義開始的全部代碼空間,如:v class A/外部沒有包含類定義的快 v /v ;v /A類定義作用域v void f() v class B/外部有包含類定義的快存在 v /v ;/B類定義作用域范圍v /B類定義作用域到此為止v /文件到此為止(A類定義作用域到此為止)類作用域:類定義內(nèi)部及成員函數(shù)定義內(nèi)部實(shí)現(xiàn)類的程序員在類作用域下編程【:定義文件(頭文件)和實(shí)現(xiàn)文件都是在類作用域中】類作用域中,類的成員函數(shù)對(duì)數(shù)據(jù)成員和其他成員函數(shù)具有無限制的訪問權(quán)。而類定義作用域的含義是,【可以定義類的作用域】要想定義類,必須在類定義作用域中,脫離類定義作用域不能使用此類,如上面程序中對(duì)象B,必須在函數(shù)F中才能使用定義,f外想定義門兒都沒有。如:v / test class scopev /=v #include<iostream>v using namespace std;v /-v class Xv public:v void f1()v m=6;v f2();v /-v void f2();v private:v int m;v ;/v void X:f2()v cout<<"Data member: "<<m<<endl; / X:mv int m=7;v cout<<"Local Variable: "<<m<<endl; / X:m被掩藏v cout<<"Data member: "<<X:m<<endl;v /-v int main() / 此處以下不屬于類作用域但屬于類定義作用域v X x;v x.f1();v /=總結(jié):在不同的類A、B中分別定義int num;不會(huì)沖突,因?yàn)镹UM分屬不同的類作用域。 X x;可一樣的原因是X是對(duì)象,x是成員參數(shù)。內(nèi)部空間作用域塊作用域是花括號(hào)所包圍的作用域;文件作用域類似于全局變量;#include<iostream>Using namespace std;Int num;/文件作用域Void main()Int num;/塊作用域int num;/塊作用域Cout<<num<<endl;Cout<<:num<<endl;Cout<<num<<endl;值傳送型函數(shù):調(diào)用函數(shù)時(shí),先給形參分配內(nèi)存;將值傳入形參,函數(shù)開始運(yùn)行,運(yùn)行結(jié)束時(shí),void型的不返回值,int 型的就將return值返回主函數(shù)中,最后釋放掉形參的內(nèi)存。所以實(shí)參的標(biāo)識(shí)符 和 形參的標(biāo)識(shí)符相同也沒事,因?yàn)榉謱俨煌目熳饔糜?。除此三種情況,其他命名相同則命名沖突,redeclaration報(bào)錯(cuò)【重復(fù)聲明】