国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++基礎之析構函數的介紹

開發 后端
本文介紹的是C++程序設計語言中的析構函數,對于析構函數而言,我想我們并不陌生。希望對你有幫助,一起來看。

析構函數(destructor) 與構造函數相反,當對象脫離其作用域時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,應在退出前在析構函數中用delete釋放)。

前面的一些例子都沒有說明析構函數,這是因為所用到的類在結束時不需要做特別的清理工作。下面的程序給出了一新的Date類,其中包括一個字符串指針,用來表示月份。

  1. #include \"iostream.h\"  
  2. #include \"string.h\"  
  3.  
  4. class Date  
  5. {  
  6. int mo,da,yr;  
  7. char *month;  
  8. public:  
  9. Date(int m=0, int d=0, int y=0);  
  10. ~Date();  
  11. void display() const;  
  12. };  
  13.  
  14. Date::Date(int m,int d,int y)  
  15. {  
  16. static char *mos[] =  
  17. {  
  18. \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",  
  19. \"July\",\"August\",\"September\",\"October\",\"November\",\"December\" 
  20. };  
  21. mo=m; da=d; yr=y;  
  22. if(m!=0)  
  23. {  
  24. month=new char[strlen(mos[m-1])+1];  
  25. strcpy(month, mos[m-1]);  
  26. }  
  27. else month = 0;  
  28. }  
  29.  
  30. Date::~Date()  
  31. {  
  32. delete [] month;  
  33. }  
  34.  
  35. void Date::display() const 
  36. {  
  37. if(month!=0) cout<<month<<\' \'<<da<<\',\'<<yr;  
  38. }  
  39.  
  40. int main()  
  41. {  
  42. Date birthday(8,11,1979);  
  43. birthday.display();  
  44. return 0;  

在Date對象的構造函數中,首先用new運算符為字符串month動態分配了內存,然后從內部數組中把月份的名字拷貝給字符串指針month。
析構函數在刪除month指針時,可能會出現一些問題。當然從這個程序本身來看,沒什么麻煩;但是從設計一個類的角度來看,當Date類用于賦值時,就會出現問題。假設上面的main()修改為“

  1. int main()  
  2. {  
  3. Date birthday(8,11,1979);  
  4.  
  5. Date today;  
  6. today=birthday;  
  7.  
  8. birthday.display();  
  9. return 0;  

這會生成一個名為today的空的Date型變量,并且把birthday值賦給它。如果不特別通知編譯器,它會簡單的認為類的賦值就是成員對成員的拷貝。在上面的程序中,變量birthday有一個字符型指針month,并且在構造函數里用new運算符初始化過了。當birthday離開其作用域時,析構函數會調用delete運算符來釋放內存。但同時,當today離開它的作用域時,析構函數同樣會對它進行釋放操作,而today里的month指針是birthday里的month指針的一個拷貝。析構函數對同一指針進行了兩次刪除操作,這會帶來不可預知的后果。

如果假設today是一個外部變量,而birthday是一個自變量。當birthday離開其作用域時,就已經把對象today里的month指針刪除了。顯然這也是不正確的。
再假設有兩個初始化的Date變量,把其中一個的值賦值給另一個:

  1. Date birthday(8,11,1979);  
  2. Date today(12,29,2003);  
  3. today=birthday; 

問題就更復雜了,當這兩個變量離開作用域時,birthday中的month的值已經通過賦值傳遞給了today。而today中構造函數用new運算符給month的值卻因為賦值被覆蓋了。這樣,birthday中的month被刪除了兩次,而today中month卻沒有被刪除掉。

希望以上內容對析構函數的介紹,能夠給你帶來幫助。

責任編輯:于鐵 來源: 互聯網
相關推薦

2025-02-18 00:08:00

代碼C++RAII

2010-01-18 15:53:27

C++析構函數

2010-02-04 16:39:26

C++析構函數

2010-02-05 13:35:19

C++虛析構函數

2024-12-19 14:42:15

C++內存泄漏內存管理

2009-08-14 17:24:28

C#構造函數和析構函數

2011-07-14 23:27:05

C++引用

2009-07-30 15:24:13

C#析構函數C#構造函數

2009-09-03 13:14:55

C#構造函數C#析構函數

2011-06-15 09:47:14

C++

2011-07-14 17:02:09

C++指針

2011-07-14 17:17:21

C++指針

2024-12-11 16:00:00

C++函數編譯器

2021-12-11 19:02:03

函數C++對象

2010-01-20 14:25:56

函數調用

2025-04-11 07:50:00

虛析構函數C++開發

2010-07-20 09:52:27

Perl構造函數

2011-06-17 16:09:04

freadfwrite

2010-01-25 10:10:42

C++函數參數

2011-07-15 00:47:13

C++多態
點贊
收藏

51CTO技術棧公眾號

a级片在线免费| 午夜一区二区三区| 国产精品乡下勾搭老头1| 热99这里只有精品| aaa国产一区| 国产精品自拍合集| 精品网站aaa| 欧美日韩国产123区| 久久天天东北熟女毛茸茸| 欧美在线三级| 日韩成人在线视频观看| 性网站在线播放| 欧美区在线观看| 青青草在线视频免费观看| 91麻豆swag| 91九色露脸| 午夜国产精品视频免费体验区| 日韩av观看网址| 精品免费在线观看| 国产一级片在线| 欧美精品一区二区三区在线| 国产视频一区欧美| 一级日韩一区在线观看| 97蜜桃久久| 欧美日韩精品一区二区三区 | 久久久久久久久中文字幕| 91精品入口| 男人天堂成人网| 亚洲国产日韩av| www成人免费| 日韩 欧美一区二区三区| 污污污污污污www网站免费| 欧美自拍偷拍| 88xx成人精品| 久久久久久99久久久精品网站| 在线免费观看高清视频色| 精品久久久久久久久久久院品网 | 亚洲美女在线看| www.爱色av.com| 欧美xxav| 88av.com| 日韩欧美国产系列| 亚洲精品一区av| 欧美日韩国产高清视频| 国产精品久久久久av蜜臀| 亚洲v欧美v另类v综合v日韩v| 久久精品噜噜噜成人av农村| 久久在线精品| 精品日产一区2区三区黄免费| 国产传媒欧美日韩成人精品大片| www.亚洲成人| 国产激情久久| 视频在线观看一区二区| 99久久伊人| 中文字幕精品在线视频| 欧美国产视频| 久热精品在线视频| xvideos.蜜桃一区二区| 欧美国产日韩一区| 欧美福利在线播放网址导航| 国产成人拍精品视频午夜网站| 久久99国产精一区二区三区| 26uuu国产精品视频| 成人在线免费观看视频| 91精品啪aⅴ在线观看国产| 亚洲无吗在线| 久久九九视频| 国产一区二区三区在线观看免费 | 日韩高清在线电影| 中文字幕中文字幕在线中一区高清 | 日本国产一区二区三区| 女人av一区| 97久久天天综合色天天综合色hd| 欧美视频网站| 中文字幕日韩一区二区三区不卡 | 青青在线精品| 国产91对白在线播放| 香蕉成人在线| 热re91久久精品国99热蜜臀| 久久神马影院| 欧美精品一区二区三区四区五区 | 久久一二三四| 亚洲欧美精品在线观看| 高清国产一区二区| 婷婷丁香激情网| 欧美视频不卡中文| 岛国av在线网站| 欧美精品在线播放| 欧美日韩网址| 少妇高潮流白浆| 亚洲日本一区二区| 2021av在线| 亚洲偷熟乱区亚洲香蕉av| 国产精品午夜av| 俄罗斯精品一区二区| 国产成人免费视频网站 | 国产综合久久久久久久久久久久| 久在线观看视频| 一区二区理论电影在线观看| yw在线观看| 欧美激情一二三| 亚洲综合精品| 日韩欧美亚洲| 欧美精品一区二| 97精品视频| heyzo国产| 欧美一区二区久久久| 亚洲精品aaaaa| 一区二区三区四区视频在线观看 | 欧美肥妇毛茸茸| y111111国产精品久久久| 99免费在线观看视频| av成人老司机| 在线观看美女网站大全免费| 超薄丝袜一区二区| 亚欧成人精品| 成人免费淫片免费观看| 日韩欧美国产高清| 欧美精品系列| 日本大片免费看| 欧美日韩免费视频| 高清日韩中文字幕| 999久久欧美人妻一区二区| 色综合久久久久久久| 加勒比久久高清| 性高湖久久久久久久久aaaaa| 欧美另类高清zo欧美| 国产精品美女久久久久久不卡| 日本欧美黄色片| 日韩精品一区二区在线观看| 婷婷综合亚洲| www.91av| 欧美人与性动交| 国产不卡视频在线播放| 乱人伦中文视频在线| 日韩暖暖在线视频| 国产日本欧美一区二区| a级片免费在线观看| 国产一区免费在线| 婷婷六月综合亚洲| 蜜乳av综合| 欧美日韩在线观看不卡| 亚洲日韩欧美视频| 狠狠v欧美v日韩v亚洲ⅴ| 男人的天堂在线视频免费观看| 成人乱人伦精品视频在线观看| 国产精品日日摸夜夜摸av| 久久天堂久久| 欧美 日韩 国产 高清| 亚洲美女www午夜| 久久尤物视频| 日韩另类在线| 久久亚洲精品欧美| 在线不卡中文字幕播放| 自拍欧美日韩| 黄色网址在线播放| 超碰97国产在线| 欧美午夜精品久久久久久浪潮| 青青草91久久久久久久久| 全部a∨一极品视觉盛宴| 日韩av电影免费观看高清| 日韩理论片网站| 亚欧洲精品视频在线观看| 看一级黄色录像| 精品香蕉在线观看视频一| 精品系列免费在线观看| 色黄网站在线观看| 一本一生久久a久久精品综合蜜 | 成人18视频| 欧美日韩在线视频首页| 四季av一区二区凹凸精品| 在线看片你懂的| 91欧美视频网站| 欧美综合色免费| 国产情侣一区| 涩涩视频在线| 成人性免费视频| 亚洲欧美一区二区久久| 精品久久久久久久久久久aⅴ| h动漫在线视频| 亚洲va久久久噜噜噜| 91黄色免费看| 日韩制服丝袜先锋影音| 国产网红在线观看| 亚洲人精品午夜射精日韩| 欧美成aaa人片在线观看蜜臀| 日本一区二区不卡视频| 日韩精品免费一区二区三区| 三级在线视频| 日本免费高清一区| 中文字幕亚洲一区二区三区| 国产精品丝袜在线| 日韩欧美电影| 波多野结衣中文在线| 可以看毛片的网址| 国产成人在线精品| 欧美二区在线观看| 久久亚洲免费视频| 欧美91视频| 日本综合字幕|