*
*//淺拷貝帶來的問題**
#include
using
namespace std;
class
person
person
(const person& a)
//自己其實不需要寫拷貝建構函式,因為c++編譯器會自動幫你寫
//但是如果屬性有在堆區開闢的,就一定要自己寫,防止淺拷貝帶來的重複delete同一塊堆區記憶體的問題
~person()
//預設析構函式
cout <<
"析構函式"
<< endl;
}private
:int age;
//年齡
int* shengao;
//身高};
void
test01()
//括號法
intmain()
執行結果:https:
20200802154617639.png?x-oss-process=image/watermark,type_zmfuz3pozw5na**pdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzqznjgwnduz,size_16,color_ffffff,t_70
執行結果分析:
1.有參、普通建構函式 //person p1(10,160);執行結果
2.有參、拷貝建構函式// person p2(p1);執行結果
析構函式 //test01整段**執行完畢後釋放p2,呼叫析構函式(先進後出,後進先出,所以是先釋放p2)
然後報錯 //淺拷貝是p1和p2的int *shengao指向的是同一塊堆區記憶體,p2釋放後已經delete了該塊記憶體
//這裡p1釋放,又要去delete該塊記憶體,所以報錯了
**解決方案*
*//用深拷貝在堆區新開闢一段記憶體來儲存即可避免重複delete同一塊堆區記憶體
```cpp
person
(const person& a)
~
深拷貝和淺拷貝問題
下午遇到乙個關於乙個表的數值拷貝的問題,有點意思,不多說,直接上 記錄玩家的資訊 self.userinfo for i 1,play count do table.insert self.userinfo,self.deskuserlist getuserbydeskstation i 1 end...
深拷貝的 淺拷貝講解以及示例
含義 假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,如果b沒變,那就是深拷貝。關於棧堆,就要了解基本資料型別與引用資料型別,因為這些概念能更好的讓你理解深拷貝與淺拷貝 let a 0,1,2,3,4 b a console.log a b true a 0 1 c...
Python中的淺拷貝以及深拷貝
python中資料型別 不可變資料物件 不可變指的是資料儲存到記憶體後無法進行修改。python中的不可變資料型別有 int float str tuple bool 可變資料型別 可變指的是資料儲存後可以進行修改。python中的可變資料型別有 list dict set 表示 print 修改前...