亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

淺談C++的淺拷貝出現的錯誤

2020-05-23 13:55:02
字體:
來源:轉載
供稿:網友

之前看一些資料提到淺拷貝的問題,即在復制對象時,只是對對象中的數據成員進行簡單的賦值,默認拷貝構造函數執行的也是淺拷貝。如果對象中存在動態成員,如指針,那么僅僅做淺拷貝是不夠的,并且容易引發錯誤,最經典的例子:

#include <iostream>#include <stdio.h> using namespace std;class A{  public:    A(){m_p = new int(10);};    ~A(){cout << "destruction function" << endl;delete m_p;};     int* m_p; };void copyTest(A atmp){  ;}int main(){  A a;  copyTest(a);}

執行這段代碼會出現崩潰,因為析構函數里的delete m_p執行了兩次,而m_p指向的是同一塊內存。因為在調用copyTest時傳入了對象a,atmp利用a作為參數執行了默認拷貝構造函數,但是只是簡單地把對象a的m_p的內存地址拷貝給atmp的m_p,因此這個時候atmp.m_p只是指向了和a.m_p相同的內存塊。

當copyTest執行完畢后,臨時變量atmp會被銷毀,這個時候析構函數被調用,delete了m_p指向的內存。而當main函數執行完畢后,a對象也需要被銷毀,這個時候析構函數再次被執行,而這個時候m_p已經不知道指向什么地方了,delete操作引發程序崩潰。

解決這個問題的方法有很多:一種方法是實現智能指針,對m_p進行引用計數,當引用值為0時才執行delete;也可以每次把m_p的初始值設為NULL,每次執行delete操作前先檢查m_p是否為NULL,delete后再讓m_p指向NULL,這個方法其實道理和智能指針差不多,只是智能指針更合理有效地利用類進行管理;還有一種做法是重寫拷貝構造函數,確保在對象復制時進行深拷貝,即重新分配內存空間,并且把a中m_p指向內存的內容拷貝到分配的空間。

以上這種情況只有在利用“值傳遞”復制對象時才發生,如果我們傳遞的是指針,就不會有這種情況了:

#include <iostream>#include <stdio.h> using namespace std;class A{  public:    A(){m_p = new int(10);};    ~A(){cout << "destruction function" << endl;delete m_p;};     int* m_p; };void copyTest(A* atmp){  ;}int main(){  A* a;  copyTest(a);}

因為傳遞到copyTest的參數只是一個地址,指向的還是對象a,并沒有發生對象的復制,當然就不存在上面的深淺拷貝問題了。

以上就是小編為大家帶來的淺談C++的淺拷貝出現的錯誤全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人欧美在线观看| 国产精品男人爽免费视频1| 欧美华人在线视频| 欧美日韩中文在线| 亚洲精品国产精品国自产观看浪潮| 欧美日韩亚洲网| 亚洲国产成人久久综合一区| 亚洲一区二区三区四区在线播放| www.日韩av.com| 欧美最猛性xxxxx亚洲精品| 亚洲一区二区三区四区在线播放| 国产日本欧美在线观看| 久久中国妇女中文字幕| 国产精品igao视频| 91麻豆国产语对白在线观看| 亚洲国产欧美一区| 中文字幕亚洲激情| 久久久久久久激情视频| 91成人精品网站| 青青a在线精品免费观看| 亚州精品天堂中文字幕| 成人免费观看49www在线观看| 国产成人午夜视频网址| 亚洲最新在线视频| 国产在线精品成人一区二区三区| 日本欧美一二三区| 亚洲欧美日韩天堂一区二区| 91av在线播放| 91极品女神在线| 国产精品国内视频| 国产福利视频一区| www.亚洲成人| 韩国三级日本三级少妇99| 久久久久久久久国产精品| 亚洲免费av电影| 久久久久久网址| 亚洲最大的成人网| 久久国产精品99国产精| 91免费福利视频| 日韩欧美一区视频| 97色在线视频| 日韩欧美亚洲综合| 7m第一福利500精品视频| 精品视频久久久久久久| 国产精品视频自在线| 国产精品久在线观看| 欧美大尺度激情区在线播放| 2019日本中文字幕| 亚洲一区二区精品| 欧美一性一乱一交一视频| 亚洲人成绝费网站色www| 国产亚洲人成a一在线v站| 91精品久久久久久综合乱菊| 亚洲第一区第一页| 亚洲亚裔videos黑人hd| 免费成人高清视频| 91精品国产91久久久久久| 久久电影一区二区| 色99之美女主播在线视频| 成人午夜黄色影院| 国内精品久久久久影院 日本资源| 国产中文欧美精品| 久久99精品久久久久久青青91| 久久夜色精品国产| 国内揄拍国内精品少妇国语| 97在线视频免费播放| 狠狠操狠狠色综合网| 亚洲精品视频在线观看视频| 精品亚洲一区二区三区在线观看| 成人国产精品免费视频| 美女久久久久久久| 色婷婷**av毛片一区| 国产成人极品视频| 国产精品久久久久久亚洲调教| 亚洲精品91美女久久久久久久| 欧美风情在线观看| 久久久久九九九九| 26uuu日韩精品一区二区| 欧美高清电影在线看| 久久视频在线观看免费| 国产午夜精品理论片a级探花| 亚洲精品98久久久久久中文字幕| 色噜噜狠狠狠综合曰曰曰| 成人精品久久久| 97在线日本国产| 亚洲自拍偷拍视频| 日韩av男人的天堂| 国模吧一区二区三区| 亚洲视频axxx| 精品动漫一区二区| 国产偷国产偷亚洲清高网站| 日韩成人在线网站| 欧美最猛性xxxx| 国产精品视频久| 亚洲精品国产精品久久清纯直播| 国产精品成人国产乱一区| 国产精品人成电影| 91老司机在线| 91国产一区在线| 欧美黑人巨大xxx极品| 国模极品一区二区三区| 久久久久成人精品| 欧美精品中文字幕一区| 日韩免费观看高清| 国产欧美精品va在线观看| 欧美另类第一页| 91精品免费视频| 国产精品私拍pans大尺度在线| 亚洲精品福利视频| 欧美激情在线视频二区| 国产成人一区二区三区小说| 成人a视频在线观看| 国产精品久久久精品| 欧美日韩国产中文精品字幕自在自线| 亚洲视频在线视频| 中文字幕在线观看亚洲| 97在线视频一区| 色综合影院在线| 精品成人乱色一区二区| 亚洲国产欧美一区二区丝袜黑人| 日韩网站在线观看| 日韩国产精品亚洲а∨天堂免| 91久久久亚洲精品| 91视频免费在线| 国产99视频在线观看| www国产精品com| 亚洲国产精品久久精品怡红院| 亚洲国产高潮在线观看| 国产97在线播放| 亚洲欧美日韩在线一区| 中文字幕日韩欧美在线| 一区二区三区久久精品| 国产精品精品视频一区二区三区| 日韩成人xxxx| 久久香蕉频线观| 国产精品av免费在线观看| 欧美尺度大的性做爰视频| 7m第一福利500精品视频| 日韩欧美成人精品| 欧美激情欧美狂野欧美精品| 91美女福利视频高清| 91精品国产高清自在线看超| 日韩小视频在线观看| 欧美精品videosex性欧美| 欧美日韩一区二区免费在线观看| 欧美电影免费观看高清完整| 久久久www成人免费精品| 欧美电影在线观看完整版| 久久精品一偷一偷国产| 亚洲18私人小影院| 国产精品久久久久久久久久免费| 亚洲图中文字幕| 久久久国产精品x99av| 亚洲欧洲自拍偷拍| 日韩激情第一页| 亚洲成人动漫在线播放| 欧美超级免费视 在线| 精品少妇v888av| 91国产精品视频在线| 九九热这里只有精品6| 久久久伊人欧美| 国产成人aa精品一区在线播放| 久久精品青青大伊人av| 国产精品日日做人人爱|