课程
/后端开发
/C++
/C++远征之多态篇
为什么我写catch(string)与catch(string &e)出来的结果是一样的?这个e有什么区别呀
2020-02-25
源自:C++远征之多态篇 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”吧
举报
本教程将带领大家体会面向对象三大特性中的多态特性