[英]Throw and Catch in c++
(c++)所以我的 throw 代碼就像throw "No paper"
而我的 catch 代碼是catch(const char *txt ){}
我的問題是為什么我們使用指針來定義 catch 類型以及為什么 char,我們不能使用像catch(string txt){}
這樣的東西我只是學習異常處理,無法弄清楚他們為什么使用指針。 這是 代碼!
當您拋出C 字符串文字(如“無紙”)時,實際上是在拋出const char*
類型的指針,而不是字符數組。 這就是 C++ 的工作原理。
換句話說,字符串文字會自動衰減為const char*
。 當catch
參數接收到它時,它不會神奇地變成std::string
或類似的東西。
從技術上講,拋出 8 字節指針通常比拋出 32 字節std::string
更有效。 object 的大小越大,在異常處理過程中復制它的成本就越高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.