av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

C++異常傳遞三種不同方式介紹

C++編程語言中同樣存在異常的相關(guān)操作。我們可以使用throw來解決異常處理。那么今天我們將會(huì)針對這一方面的知識(shí)重點(diǎn)介紹一下C++異常傳遞的相關(guān)方法,希望能夠給大家?guī)硪恍椭?/p>

C++異常傳遞之1.傳值(by value)

傳值的過程中會(huì)產(chǎn)生臨時(shí)對象的拷貝,不能解決多態(tài)的問題,如下:myexception繼承exception,但是但確無法被正確的調(diào)用myexception的方法,造成對異常對象的切割。

 
 
 
  1. class myexception:public exception{  
  2. public:  
  3. virtual const char* what() throw();  
  4. };  
  5. const char* myexception::what(){  
  6. return "myException";  
  7. }  
  8. class A{  
  9. public:  
  10. A(){}  
  11. void f() throw(){  
  12. throw myexception();  
  13. }  
  14. };  
  15. int main(){  
  16. A a;  
  17. try{  
  18. a.f();  
  19. }catch(exception exc){  
  20. cout<
  21. }  

運(yùn)行結(jié)果:UnKnown exceptions

程序執(zhí)行是會(huì)調(diào)用exception的what方法,而不是myexception的what方法。

C++異常傳遞之2.傳指針(by pointer)

指針可以實(shí)現(xiàn)多態(tài),但往往會(huì)將臨時(shí)對象的地址作為指針傳出去,出現(xiàn)懸掛指針錯(cuò)誤。如果在堆上分配內(nèi)存空間,又往往不知道何時(shí)刪除對象,出現(xiàn)to be or not to be的錯(cuò)誤。

結(jié)果顯示:myException

 
 
 
  1. class myexception:public exception{  
  2. public:  
  3. virtual const char * what() const;  
  4. };  
  5. const char* myexception::what() const{  
  6. return "myException";  
  7. }  
  8. class A{  
  9. public:  
  10. A(){}  
  11. void f() throw(){  
  12. throw new myexception();  
  13. }  
  14. };  
  15. int main(){  
  16. A a;  
  17. try{  
  18. a.f();  
  19. }catch(exception* pexc){  
  20. cout<what();  
  21. delete pexc;  
  22. }  

C++異常傳遞之3.傳引用(by reference)

傳引用是***的方法,可以克服前面的兩個(gè)問題。

程序結(jié)果顯示:myException

 
 
 
  1. class myexception:public exception{  
  2. public:  
  3. virtual const char * what() const;  
  4. };  
  5. const char* myexception::what() const{  
  6. return "myException";  
  7. }  
  8. class A{  
  9. public:  
  10. A(){}  
  11. void f() throw(){  
  12. throw myexception();  
  13. }  
  14. };  
  15. int main(){  
  16. A a;  
  17. try{  
  18. a.f();  
  19. }catch(exception& exc){  
  20. cout<
  21. }  

以上就是對C++異常傳遞的相關(guān)介紹。

【編輯推薦】

  1. C++多線程代碼范例剖析
  2. C++獲得系統(tǒng)時(shí)間不同方案介紹
  3. C++靜態(tài)成員函數(shù)基本概念講解
  4. C++靜態(tài)數(shù)據(jù)成員定義及應(yīng)用淺談
  5. C++指針重載應(yīng)用代碼解讀

網(wǎng)頁題目:C++異常傳遞三種不同方式介紹
當(dāng)前地址:http://uogjgqi.cn/article/coocdis.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流