




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第八名字空間和異第八名字空間和異BeijingUniversityofPosts&BeijingUniversityofPosts&BeijingBeijingUniversityofPosts&8.2名字空8.2名字空成員可以在名字空間的定義里聲明,而后再去定BeijingUniversityofPosts&理想情況下,一個名理想情況下,一個名字空間應(yīng)BeijingUniversityofPosts&示示namespacename{聲明和定}doubleprim(boolget){/*…*/}doubleterm(boolget){/*…*/}doubleexpr(boolget){/*…*/}voidErrorParser中無logicalvoidParser::prim(int);Parser{doubleexpr(bool);doubleprim(bool);}//實現(xiàn)與界面分doubleParser::expr(boolget){/*…*/}doubleParser::prim(boolget){/*doubleParser::term(boolget){/* BeijingUniversityofPosts&8.2.1帶限定詞的名8.2.1帶限定詞的名BeijingUniversityofPosts&帶限定詞的名字示namespace//定義一個新帶限定詞的名字示namespace//定義一個新的enumToken_value{NAME,NUMBER,END,MUL=‘*’};Token_valuecurr_tok;stringstring_value;Token_valueget_token(){/*…{}doublefor(;;)switch(Lexer::curr_tok){//caseLexer::NAME:left*=prim(true);//}/*…*///BeijingUniversityofPosts&8.2.2使用聲8.2.2使用聲可以通過使用聲明語句來避免反復(fù)書寫名字空間定doubleParser::prim(bool{caseLexer::NUMBER://}}doubleParser::prim(bool{usingLexer::curr_tok;get_token();//…BeijingUniversityofPosts&也可以把有關(guān)的使用說明也可以把有關(guān)的使用說明放在Parser名字空間的doubleParser::term(bool{doubleleft=prim(get);{case義Parser{doubleprim(bool);doubleterm(bool);left*=prim(true);caseif(doubled={left/=prim(true);break;}returnerror(“dividedby/*……*/usingLexer::curr_tok;usingError::error;}BeijingUniversityofPosts&8.2.3使用指一個使用指令能把來自一個名字空間的所有8.2.3使用指一個使用指令能把來自一個名字空間的所有Parser{doubleprim(bool);doubleterm(bool);doubleusingnamespaceLexer;usingnamespaceError;}BeijingUniversityofPosts&8.2.4多重界//namespaceParser{doubleprim(bool);doubleterm(bool);doubleexpr(bool);8.2.4多重界//namespaceParser{doubleprim(bool);doubleterm(bool);doubleexpr(bool);usingnamespaceLexer;usingnamespaceError;}double}BeijingUniversityofPosts&界面設(shè)計的各種界面設(shè)計的各種選BeijingUniversityofPosts&界面設(shè)計的兩種選//編程界面設(shè)計的兩種選//編程界面不Parser_interface{double//double//}Parser_interface{usingexpr(boolget){return}現(xiàn)在所有的依賴性都已最小當(dāng)然,對于我們所面對的大部分題而言,這種解決方案太過分看上去,用戶界面還是很容易受編程界面的傷害,原本希望能將相互隔BeijingUniversityofPosts&8.2.5避免名字沖8.2.5避免名字沖BeijingUniversityofPosts&避免名字沖突示charf(char);intf(int);避免名字沖突示charf(char);intf(int);/*…*/解決方法namespacecharf(char);intf(int);classString{/*…*/};}namespacecharf(char);doublef(double);classString{/*…*/};}使用時My::f(char),usingMy::f;usingYou::String;3usingnamespaceMy;或者usingnamespacecharf(char);classString{/*…*/BeijingUniversityofPosts&無名名字空無名名字空BeijingUniversityofPosts&無名名字空間示namespaceMine{無名名字空間示namespaceMine{intvoiff(){/*…*/}intg(){/*…*/}}相當(dāng)于$$${inta;voiff(){/*…*/}intg(){/*…*/}}usingnamespace//其中,$$$是在這個名字空//定義所在的作用域里具有唯//性的名字,在不同的編譯單//里的無名名字空間也互不相intvoiff(){/*…*/}intg(){/*…*/}}//保證名稱的私有性,避免沖BeijingUniversityofPosts&8.2.6名字查一個取T類型參數(shù)的函數(shù)常常與8.2.6名字查一個取T類型參數(shù)的函數(shù)常常與T類型本身定namespaceChrono{booloperator==(constDate&,conststd::string&);format(const}voidf(Chrono::Dated,inti){std::strings=format(d);std::stringt=format(i);//Error:找不到使用int輸//參數(shù)的format()版}BeijingUniversityofPosts&名字空間示名字空間示voidf(Chrono::Dated,std::string{if(d==s){//}elseif(d==“August4,1914”)//}}//此函數(shù)最終會調(diào)用Chrono名字空間里的BeijingUniversityofPosts&8.2.7名字空間別8.2.7名字空間別namespaceA)可能會出現(xiàn)沖突,但是如果BeijingUniversityofPosts&名字空間別namespaceATT=名字空間別namespaceATT=American_Telephone_and_Telegraph;ATT::Strings3=“Grieg”;ATT::Strings4=namespaceLib=Lib::setLib::Strings5=//將來Foundation庫的版本更新了,只需要修改別//Lib的初始化語句并重新編譯即可,極大的簡化了//級工//注意:程序中過多的使用別名也會引起混BeijingUniversityofPosts&8.2.8名字空間組8.2.8名字空間組有時候我們需要從現(xiàn)存的界面出發(fā)組合出新的界His_string{classStringoperator+(constString&,constString&);Stringoperator+(constString&,constchar*);voidfill(char);}namespacetemplate<classT>class}namespaceusingnamespaceHis_string;usingnamespaceHer_vector;BeijingUniversityofPosts&名字空間組合示voidf()名字空間組合示voidf()My_lib::Strings=//系統(tǒng)能夠查到//}時,才需要知道一個實體真所在的名字空voidMy_lib::fill(char}//voidHis_string::fill(char}//voidMy_lib::my_fct(String&{//okString是//usingnamespaceMy_lib;voidg(Vector<String>&vs){}//Vector以及String都是//中可以查到BeijingUniversityofPosts&選His_string{選His_string{classStringoperator+(constString&,constString&);Stringoperator+(constString&,constchar*);}BeijingUniversityofPosts&改進方通過using語句,使得從名字空間里選擇一改進方通過using語句,使得從名字空間里選擇一My_string{usingusingHis_string::operator+;//一條using語句就可以將operator+的所有重載都包含進BeijingUniversityofPosts&組合和選將組組合和選將組合(通過using指令)和選擇(通過using聲明)結(jié)例子所需要His_lib{classtemplate<classT>class}Her_lib{template<classT>classnamespaceusingnamespaceHis_lib;usingnamespaceHer_lib;usingHis_lib::String;//以偏向His_lib的方式解//潛在的沖using//同template<classT>class}BeijingUniversityofPosts&組合與選組合與選BeijingUniversityofPosts&8.2.9名字空間和老代8.2.9名字空間和老代BeijingUniversityofPosts&名字空間和//cstdio,給那名字空間和//cstdio,給那些不希望一大namespacestd{intprintf(constchar*}intmain(){printf("Hello,}namespacestd{intprintf(constchar*}usingnamespace#include<cstdio>usingBeijingUniversityofPosts&名字空間和重名字空間和重//老的namespaceB{void}namespaceA{void}//新的void#include“A.h”#include“B.h”usingnamespaceA;usingnamespaceB;voidg(){f(‘a(chǎn)’);//調(diào)用B.h中的}voidg(){f(‘a(chǎn)’);//調(diào)用B.h中的}BeijingUniversityofPosts&名字空間是開放名字空間是開放A{intf();//A中現(xiàn)有}void{//}A{intg();//A中現(xiàn)有f()和}//Error:A中沒有namespaceA{voidff()}BeijingUniversityofPosts&8.3異8.3異一方報告那些無法在局部解決的錯BeijingUniversityofPosts&BeijingUniversityofPosts&異常處理示voidg(int{try異常處理示voidg(int{trycharc=}x){cerr<<“oops\n”;cerr<<x.i<<}Range_error{inti;Range_error(intii)charto_char(int{throwRange_error(i);return}BeijingUniversityofPosts&異常的處理過異常的處理過異常的地方跳轉(zhuǎn)到try后面的第一個異常處理BeijingUniversityofPosts&BeijingUniversityofPosts&異常的辨識示catch(Syntax_error異常的辨識示catch(Syntax_error}catc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宜昌市猇亭區(qū)急需緊缺人才引進12人考前自測高頻考點模擬試題有答案詳解
- 2025年泰興市公開招聘教師27人考前自測高頻考點模擬試題附答案詳解(黃金題型)
- 大學(xué)輪胎設(shè)計題庫及答案
- 眾翔營銷方案
- 2025廣西南寧市良慶區(qū)玉洞街道辦事處社區(qū)公益性崗位勞動保障協(xié)管員招聘1人考前自測高頻考點模擬試題完整答案詳解
- 產(chǎn)品全員營銷方案
- 交易會管理制度
- 小學(xué)生入隊發(fā)言稿
- 管培生述職演講稿
- 競選廣播員的演講稿
- 風(fēng)機葉片吊裝安全培訓(xùn)課件
- 2025年安徽蕭縣縣直事業(yè)單位招聘115人筆試備考題庫附答案詳解
- 風(fēng)險分級管控和隱患排查治理體系培訓(xùn)考試試題(附答案)
- 2025年保安員考試經(jīng)典例題附完整答案詳解(典優(yōu))
- 網(wǎng)絡(luò)安全宣傳周網(wǎng)絡(luò)安全知識競答考試題及答案
- 新能源電廠培訓(xùn)課件
- 司法局社區(qū)矯正工作匯報
- 生物安全培訓(xùn)上崗證課件
- 蜜蜂科普知識教學(xué)課件
- 新質(zhì)生產(chǎn)力區(qū)域經(jīng)濟發(fā)展
- 質(zhì)量信得過班組知識培訓(xùn)課件
評論
0/150
提交評論