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