C++中ShallowCopy和DeepCopy的区别
来源:互联网 发布:java手动编译 编辑:程序博客网 时间:2024/06/09 16:17
C++中ShallowCopy和DeepCopy的区别
A shallow copy of an object copies all of the member field values. This works well if the fields are values, but may not be what you want for fields that point to dynamically allocated memory. The pointer will be copied, but the memory it points to will not be copied – the field in both the original object and the copy will then point to the same dynamically allocated memory, which is not usually what you want. The default copy constructor and assignment operator make shallow copies.
std::vector is a typical shallow copy mode. When use push_back to add element, if the element is value, it will copy the value to std::vector. However, if the element is a pointer to allocated memory, it will add the same pointer to std::vector, instead of copy the allocated memory.
A deep copy copies all fields, and makes copies of dynamically allocated memory pointed to by the fields. To make a deep copy, you must write a copy constructor and overload the assignment operator, otherwise the copy will point to the original, with disasterous consequences.
Deep copies need …
If an object has pointers to dynamically allocated memory, and the dynamically allocated memory needs to be copied when the original object is copied, then a deep copy is required.
A class that requires deep copies generally needs:
•A constructor to either make an initial allocation or set the pointer to NULL.
•A destructor to delete the dynamically allocated memory.
•A copy constructor to make a copy of the dynamically allocated memory.
•An overloaded assignment operator to make a copy of the dynamically allocated memory.
原始网页:
http://fredosaurus.com/notes-cpp/oop-condestructors/shallowdeepcopy.html
- C++中ShallowCopy和DeepCopy的区别
- ShallowCopy与DeepCopy
- 漫谈deepcopy(深拷贝)和shallowcopy(浅拷贝)
- Python中copy和deepcopy中的区别
- Python中 copy, deepcopy 的区别
- Python里的拷贝【引用和copy(),deepcopy()的区别】
- Python中的引用,copy和deepcopy的区别
- [Python]理解Python深拷贝DeepCopy与浅拷贝ShallowCopy
- “=”,copy,以及deepcopy 的区别
- Python copy与deepcopy的区别
- 【Python】copy()与deepcopy()的区别
- Python---copy()、deepcopy()与赋值的区别
- Python中“=”、切片、copy和deepcopy
- 从python中copy与deepcopy的区别看python引用
- 从python中copy与deepcopy的区别看python引用
- 从python中copy与deepcopy的区别看python引用
- 从python中copy与deepcopy的区别看python引用
- python引用传递还是值传递,以及copy和deepcopy的区别
- android进程间通信:使用AIDL
- 数据库SQL优化大总结之 百万级数据库优化方案
- Android 启动手机上的APP应用
- Powershell 环境变量
- 封装iOS自定义控件的体会
- C++中ShallowCopy和DeepCopy的区别
- 终于转到IOS的学习了!!
- Oracle11g数据库空表不能导出解决办法
- Platform Dependent Compilation
- Thymeleaf中each标签遍历list如何获取index
- Objective-C Runtime 相关资料
- 选择HttpHandler还是HttpModule?
- 欢迎使用CSDN-markdown编辑器
- codeforces--623B Alice, Bob, Two Teams