課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
為什么我寫catch(string)與catch(string &e)出來的結(jié)果是一樣的?這個e有什么區(qū)別呀
2020-02-25
源自:C++遠(yuǎn)征之多態(tài)篇 5-4
正在回答
因為throw拋出來的東西就是一個string類型的“除數(shù)不能為0"這個字符串。
你的第一種寫法catch(string),只要是拋出來的字符串都能夠捕獲到,但是你在打印的時候你只能通過【cout<<"除數(shù)不能為0"<<endl;】打印出來, 因為你沒有一個指針來接受你字符串內(nèi)容。
而用catch(string &e),捕獲的時候e會指向“除數(shù)不能為0”這個字符串的地址,因此在打印的時候只需要【cout<<e<<endl】;就可以把“除數(shù)不能為0”這句話打印出來。
&e是為了輸出catch到的字符串(“除數(shù)不能為0”)的時候cout<<e<<endl;,如果字符串沒有名字,輸出的時候cout<<?<<endl;?處填什么,總不能填上“除數(shù)不能為0”吧
舉報
本教程將帶領(lǐng)大家體會面向?qū)ο笕筇匦灾械亩鄳B(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-02-27
因為throw拋出來的東西就是一個string類型的“除數(shù)不能為0"這個字符串。
你的第一種寫法catch(string),只要是拋出來的字符串都能夠捕獲到,但是你在打印的時候你只能通過【cout<<"除數(shù)不能為0"<<endl;】打印出來, 因為你沒有一個指針來接受你字符串內(nèi)容。
而用catch(string &e),捕獲的時候e會指向“除數(shù)不能為0”這個字符串的地址,因此在打印的時候只需要【cout<<e<<endl】;就可以把“除數(shù)不能為0”這句話打印出來。
2020-02-25
&e是為了輸出catch到的字符串(“除數(shù)不能為0”)的時候cout<<e<<endl;,如果字符串沒有名字,輸出的時候cout<<?<<endl;?處填什么,總不能填上“除數(shù)不能為0”吧