日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

关于c++深拷贝与浅拷贝

發布時間:2025/7/14 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于c++深拷贝与浅拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先看一段代碼:

1 #include<iostream> 2 #include<cstring> 3 #include<malloc.h> 4 using namespace std; 5 6 class Teacher{ 7 public: 8 Teacher(int id,char *name){ 9 m_id=id; 10 11 m_name=(char*)malloc(strlen(name)+1);//由于顯示析構函數中free內存空間,因而必須malloc 12 strcpy(m_name,name); 13 } 14 15 void Print(){ 16 cout<<"id="<<m_id<<" name="<<m_name<<endl; 17 } 18 19 ~Teacher(){/*顯示析構函數*/ 20 cout<<"Teacher()..."<<endl; 21 if(m_name!=NULL){ 22 free(m_name); 23 m_name=NULL; 24 } 25 } 26 private: 27 int m_id; 28 char *m_name; 29 }; 30 31 int main(){ 32 Teacher t1(1,"zhangsan"); 33 t1.Print(); 34 35 return 0; 36 }

淺談析構函數特點:

1.函數名是在類名前加上~,無參數且無返回值。

2.一個類只能有且有一個析構函數,如果沒有顯式的定義,系統會生成一個缺省的析構函數(合成析構函數)。

3.析構函數不能重載。每有一次構造函數的調用就會有一次析構函數的調用。

1 #include<iostream> 2 #include<cstring> 3 #include<malloc.h> 4 using namespace std; 5 6 class Teacher{ 7 public: 8 Teacher(int id,char *name){ 9 cout<<"Teacher(int,char*)..."<<endl; 10 m_id=id; 11 12 int len=strlen(name); 13 m_name=(char*)malloc(len+1);//由于顯示析構函數中free內存空間,因而必須malloc 14 strcpy(m_name,name); 15 } 16 /*默認拷貝構造函數,淺拷貝!!!*/ 17 Teacher(const Teacher& another){ 18 m_id=another.m_id; 19 m_name=another.m_name; 20 } 21 void Print(){ 22 cout<<"id="<<m_id<<" name="<<m_name<<endl; 23 } 24 25 ~Teacher(){/*顯示析構函數*/ 26 cout<<"Teacher()..."<<endl; 27 if(m_name!=NULL){ 28 free(m_name); 29 m_name=NULL; 30 } 31 } 32 private: 33 int m_id; 34 char *m_name; 35 }; 36 37 void test(){ 38 Teacher t1(1,"xiaoming"); 39 t1.Print(); 40 41 Teacher t2(t1);//t2的默認拷貝構造 42 t2.Print(); 43 } 44 45 int main(){ 46 test(); 47 48 return 0; 49 }

【淺拷貝】是增加了一個指針,指向原來已經存在的內存。

而【深拷貝】是增加了一個指針,并新開辟了一塊空間,讓指針指向這塊新開辟的空間

?

在test函數結束時,t1和t2都會走一遍析構函數,釋放內存空間,t2后執行,因而先走析構函數,將name的內存空間釋放掉,當t1走析構函數時,會再次進行m_name的內存空間釋放,但由于這塊內存空間在t2走析構函數時已經被釋放掉了,所以在這里會引發段錯誤!!!,這也就是淺拷貝的危害。。。

為了避免淺拷貝引發的段錯誤,因而我們需要進行深拷貝,重寫拷貝構造函數

1 #include<iostream> 2 #include<cstring> 3 #include<malloc.h> 4 using namespace std; 5 6 class Teacher{ 7 public: 8 Teacher(int id,char *name){ 9 cout<<"Teacher(int,char*)..."<<endl; 10 m_id=id; 11 12 int len=strlen(name); 13 m_name=(char*)malloc(len+1);//由于顯示析構函數中free內存空間,因而必須malloc 14 strcpy(m_name,name); 15 } 16 /*重寫拷貝構造函數,深拷貝*/ 17 Teacher(const Teacher& another){ 18 m_id=another.m_id; 19 //深拷貝// 20 int len=strlen(another.m_name); 21 m_name=(char*)malloc(len+1); 22 strcpy(m_name,another.m_name); 23 } 24 void Print(){ 25 cout<<"id="<<m_id<<" name="<<m_name<<endl; 26 } 27 28 ~Teacher(){/*顯示析構函數*/ 29 cout<<"Teacher()..."<<endl; 30 if(m_name!=NULL){ 31 free(m_name); 32 m_name=NULL; 33 } 34 } 35 private: 36 int m_id; 37 char *m_name; 38 }; 39 40 void test(){ 41 Teacher t1(1,"xiaoming"); 42 t1.Print(); 43 44 Teacher t2(t1);//t2的默認拷貝構造 45 t2.Print(); 46 } 47 48 int main(){ 49 test(); 50 51 return 0; 52 }

?

轉載于:https://www.cnblogs.com/Bravewtz/p/10333497.html

總結

以上是生活随笔為你收集整理的关于c++深拷贝与浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩激情av在线 | 在线免费观看h片 | 在线观看日韩精品 | 伊人色区 | jjzz日本视频 | 国产精品欧美大片 | 好男人影视www | 91禁看片| 色爱视频 | 黄色网页免费在线观看 | 日韩毛片一区二区三区 | 欧美脚交 | 欧美视频一区 | 娇小萝被两个黑人用半米长 | 欧美日韩国产大片 | 日日夜夜草 | 人妻无码一区二区三区久久 | 一区二区伦理 | 国产精品毛片久久久 | 男女草比视频 | 69视频在线观看免费 | 四虎成人网 | 国产又粗又猛又爽又黄的视频一 | 久草视频福利在线 | 欧美性一区 | 97狠狠| 人妻内射一区二区在线视频 | 在线观看的网站 | 中文字幕一区二区三区门四区五区 | 成人乱码一区二区三区 | 欧美日韩国产精品成人 | 亚洲欧美日韩高清 | 和漂亮岳做爰3中文字幕 | 亚洲欧美日韩电影 | 国产素人在线观看 | 韩国三级在线看 | 中文字幕乱码亚洲无线三区 | 女人张开腿让男人桶爽 | 狠狠爱欧美 | 国产黄在线观看 | 瑟瑟网站在线观看 | 免费观看黄色网址 | 欧美中字 | 无码人妻精品一区二区三区温州 | 亚洲欧美在线播放 | 在线观看视频一区 | 他趴在我两腿中间添得好爽在线看 | 国产12页 | 91精品国产乱码久久久久久久久 | 欧美无吗 | 久久亚洲AV成人无码一二三 | 蜜桃视频污 | 国产精品国产精品 | 被警察猛c猛男男男 | 国产主播福利在线 | 久久精品国产亚洲av无码娇色 | 东北少妇不带套对白 | 国产乱国产乱老熟300部视频 | 九九热精品免费视频 | 一本一道精品欧美中文字幕 | 伊人黄网| 女同久久另类69精品国产 | 日本黄色免费看 | 在线观看黄色小视频 | 免费毛片在线播放免费 | 开心激情五月婷婷 | 毛片视屏| 亚洲欧美综合一区二区 | 日本不卡高字幕在线2019 | 国产精品海角社区 | 亚洲精品91天天久久人人 | 午夜寂寞少妇 | 色爱色 | 伊人66 | 91热爆视频 | 欧美一区二区三区黄片 | v在线| 在线中文字幕日韩 | jizz欧美大全| 人妻 日韩精品 中文字幕 | 女同中文字幕 | 日本特黄成人 | 2019自拍偷拍 | 亚洲免费成人 | 放荡的美妇在线播放 | 欧美日韩精品一区二区三区 | 黄色一区二区视频 | 熟妇人妻精品一区二区三区视频 | 国产青青在线 | 艳妇乳肉豪妇荡乳xxx | 日本一区二区免费高清视频 | 女人裸体无遮挡 | 久久久久成人片免费观看蜜芽 | 久热中文 | 欧美性猛交xxxx偷拍洗澡 | 怡红院成人av| 99久久久国产精品 | 国产成人在线影院 | 欲求不满的岳中文字幕 |