当前位置:网站首页>The difference between deep copy and shallow copy
The difference between deep copy and shallow copy
2022-04-23 18:03:00 【OceanKeeper1215】
The default copy structure can complete the simple assignment of the data members of the object , This is a shallow copy .
When the data resource of the object is the heap pointed to by the pointer , The default copy constructor simply copies the pointer .
But then released , Will be released twice , That is, the same memory address is released twice , There will be mistakes .
Deep copy means , The programmer writes a copy of the structure himself , When calling the copy construct , The compiler preferentially calls the programmer's handwritten copy to construct , The programmer writes in a copy of , You can open up a separate memory space to store data , This is the deep copy .
class Test
{
private:
int* p;
public:
Test(int x)
{
this->p=new int(x);
cout << " Object created " << endl;
}
~Test()
{
if (p != NULL)
{
delete p;
}
cout << " Object is released " << endl;
}
int getX() { return *p; }
// Deep copy ( copy constructor )
Test(const Test& a)
{
this->p = new int(*a.p);
cout << " Object created " << endl;
}
// Shallow copy ( copy constructor )
//Test(const Test& a)
//{
// this->p = a.p;
// cout << " Object created " << endl;
//}
};
int main()
{
Test a(10);
// We manually write the copy constructor ,C++ The compiler will call what we wrote manually
Test b = a;
return 0;
}
版权声明
本文为[OceanKeeper1215]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230545105131.html
边栏推荐
- Visualization of residential house prices
- Docker 安装 Redis
- Detailed deployment of flask project
- Format problems encountered in word typesetting
- Process management command
- k8s之实现redis一主多从动态扩缩容
- How to read literature
- C#字节数组(byte[])和字符串相互转换
- MySQL_ 01_ Simple data retrieval
- The method of changing a value in the array and a value in the object of wechat applet
猜你喜欢
String function in MySQL
Click Cancel to return to the previous page and modify the parameter value of the previous page, let pages = getcurrentpages() let prevpage = pages [pages. Length - 2] / / the data of the previous pag
[UDS unified diagnostic service] IV. typical diagnostic service (6) - input / output control unit (0x2F)
Examination question bank and online simulation examination of the third batch (main person in charge) of special operation certificate of safety officer a certificate in Guangdong Province in 2022
Solving the problem of displaying too many unique values in ArcGIS partition statistics failed
re正则表达式
Gobang game based on pyGame Library
Halo open source project learning (II): entity classes and data tables
ArcGIS table to excel exceeds the upper limit, conversion failed
Nat Commun|在生物科学领域应用深度学习的当前进展和开放挑战
随机推荐
Auto. JS custom dialog box
YOLOv4剪枝【附代码】
Error in created hook: "referenceerror:" promise "undefined“
Submit local warehouse and synchronize code cloud warehouse
k8s之实现redis一主多从动态扩缩容
Implementation of k8s redis one master multi slave dynamic capacity expansion
C language implements memcpy, memset, strcpy, strncpy, StrCmp, strncmp and strlen
云原生虚拟化:基于 Kubevirt 构建边缘计算实例
Amount input box, used for recharge and withdrawal
Utilisation de la liste - Ajouter, supprimer et modifier la requête
Multi thread crawling Marco Polo network supplier data
解决报错max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[UDS unified diagnostic service] (Supplement) v. detailed explanation of ECU bootloader development points (1)
Implementation of image recognition code based on VGg convolutional neural network
C1 notes [task training chapter I]
Click Cancel to return to the previous page and modify the parameter value of the previous page, let pages = getcurrentpages() let prevpage = pages [pages. Length - 2] / / the data of the previous pag
587. Install fence / Sword finger offer II 014 Anagrams in strings
C network related operations
Gaode map search, drag and drop query address
C1小笔记【任务训练篇二】