成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 后端
在C++異常傳遞中,有三種不同的方式,分別為傳值;傳引用以及傳指針。我們將會在這篇文章中為大家詳細(xì)介紹一下相關(guān)內(nèi)容。

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

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

傳值的過程中會產(chǎn)生臨時對象的拷貝,不能解決多態(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<<exc.what();  
  21. }  

運行結(jié)果:UnKnown exceptions

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

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

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

結(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<<pexc->what();  
  21. delete pexc;  
  22. }  

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

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

程序結(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<<exc.what();  
  21. }  

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

【編輯推薦】

  1. C++多線程代碼范例剖析
  2. C++獲得系統(tǒng)時間不同方案介紹
  3. C++靜態(tài)成員函數(shù)基本概念講解
  4. C++靜態(tài)數(shù)據(jù)成員定義及應(yīng)用淺談
  5. C++指針重載應(yīng)用代碼解讀
責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-03-01 15:21:57

WCF死鎖

2010-02-03 15:46:15

C++函數(shù)傳遞

2009-08-06 15:26:18

C#異常類型

2010-02-04 15:41:10

C++內(nèi)存管理

2009-08-20 17:30:02

C#連接字符串

2010-02-04 10:13:35

C++獲得系統(tǒng)時間

2010-02-05 10:30:02

C++操作符重載

2010-02-04 14:29:45

C++ typenam

2018-12-01 09:15:47

物聯(lián)網(wǎng)設(shè)備物聯(lián)網(wǎng)IOT

2010-02-26 13:34:50

WCF編碼機(jī)制

2024-04-28 09:40:28

2009-08-26 17:21:05

C# using

2019-12-09 10:30:42

Windows 10帳戶Windows

2011-07-22 17:22:20

Spring

2023-08-02 10:10:00

C#C++

2015-07-08 16:07:19

iOSObjective-C

2012-07-17 09:16:16

SpringSSH

2024-08-13 08:25:16

C#外部程序方式

2024-05-27 00:20:00

2009-08-04 09:09:56

Java常見異常
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产成人99久久亚洲综合精品 | 国产精品中文字幕在线 | 欧美极品在线播放 | 精品久久久久久久 | 久草网址| 四虎影音 | 国产美女视频 | 中文精品视频 | 久久新视频 | 国产91精品网站 | 欧美一级高潮片免费的 | 亚洲瑟瑟 | 一呦二呦三呦国产精品 | 国产91一区二区三区 | 精品国产91| 99福利视频导航 | 日韩精品免费 | 97超碰人人草 | 日韩精品视频在线免费观看 | 精产国产伦理一二三区 | 一级毛片视频 | 国产在线一级片 | 一区二区三区四区在线免费观看 | 日日操夜夜干 | 欧美在线观看网站 | av免费网站在线 | 2023亚洲天堂| 99re6在线视频精品免费 | 亚洲一区电影 | 最新黄色毛片 | 成人黄色av | 久色| 久久久www成人免费精品张筱雨 | 81精品国产乱码久久久久久 | 一级毛片视频 | 国产精品久久在线 | 日日干天天操 | 国产精品久久久久不卡 | 亚洲一区二区三区四区在线观看 | 欧美视频精品 | 亚洲精品在线看 |