1. 浅拷贝

只是对指针的拷贝,拷贝后两个指针指向同一个内存空间;

  1. 深拷贝

对指针指向的内容进行拷贝(重新分配内存),经深拷贝后的指针是指向不同地址的指针;

因此浅拷贝释放内存的时候很容易出现因为释放两个指针而内存出错。
  • 浅拷贝(释放时,因为多次释放出错)

只拷贝指针

 //拷贝构造函数Vector(const Vector<T>& v):_start(nullptr),_finish(nullptr),_endOfStorage(nullptr){_start=v._start;_finish=v._finish;_endOfStorage=v._endOfStorage;}
  • 深拷贝

对资源进行拷贝

 Vector(const Vector<T>& v):_start(nullptr), _finish(nullptr), _endOfStorage(nullptr){size_t n = v.capacity();_start = new T[n];for (size_t i = 0; i < v.size(); ++i){_start[i] = v[i];}_finish = _start + v.size();_endOfStorage = _start + n;}
  • 写一个Vector的类
 template<class T>
class Vector
{typedef T* operator;
typedef const T* const_iterator;iterator _start;iterator _finish;iterator _endOfStorage;public:
//构造函数Vector():_start(nullptr), _finish(nullptr), _endOfStorage(nullptr){}//析构函数~Vector(){if(_start){delete[] _start;_star=_finish=_endOfStorage=nullptr;}}
T& operator[](size_t pos){if (pos >= 0 && pos < size())return _start[pos];}
size_t size() const
{return _finish - _start;
}size_t capacity() const
{return _endOfStorage - _start;
}};

可以用自己编辑器,把拷贝放进去试试;
欢迎大佬们批评、教导;

深拷贝与浅拷贝 区别及应用相关推荐

  1. 面试官:Java深拷贝和浅拷贝区别

    文章目录 一.拷贝的引入 (1).引用拷贝 (2).对象拷贝 二.浅拷贝 (1).定义 (2).浅拷贝实例 三.深拷贝 (1).定义 (2).深拷贝实例 一.拷贝的引入 (1).引用拷贝 创建一个指向 ...

  2. Java 深入理解深拷贝和浅拷贝区别

    title: Java 深入理解深拷贝和浅拷贝区别 date: 2021-6-19 updated: 2021-6-19 tags: Java 深拷贝和浅拷贝 categories: 面试 Java ...

  3. js中的深拷贝和浅拷贝区别

    js中的深拷贝和浅拷贝与值传递和引用传递有着些许的关联,都是根据堆栈中数据的储存来传递数据. 下面主要说一下我对深拷贝和浅拷贝的理解: 简单举个例子来说明:当我们声明一个a变量并且赋值,并且让b等于a ...

  4. python中赋值,深拷贝,浅拷贝区别

    这三种 的区别就是 复制的变量 是否是原变量的引用. 赋值:只是原变量的引用. 浅拷贝和深拷贝的区别 需要通过 子元素 区分 浅拷贝:子元素的 引用相同 深拷贝:所以引用都不相同,完全复制一份 这三种 ...

  5. Python 深拷贝和浅拷贝区别

    浅拷贝:切片,赋值,调用copy模块的copy方法 深拷贝:用copy模块的deepcopy方法 浅拷贝原数据改变时,拷贝数据也发生改变:深拷贝原数据改变时,拷贝数据不发生改变. 例子:答案为D 执行 ...

  6. python默认深拷贝_python深拷贝和浅拷贝的区别

    在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一般有三种方法, alist=[1,2,3,[& ...

  7. Python基础:对象的深拷贝和浅拷贝的区别

    Python基础:对象的深拷贝和浅拷贝的区别 1 变量与对象 2 不可变对象与可变对象 3 直接赋值 4 浅拷贝 5 深拷贝 参考文献 1 变量与对象 对象:内存中存储数据的实体,有明确的类型.在Py ...

  8. python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别

    概述 今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~ 需求: 将一个列表的数据复制到另一个列表中. 思路: 使用列表[:],拿不准可以调用copy模块. 实现方法: #!/u ...

  9. c++深拷贝和浅拷贝的区别?

    c++深拷贝和浅拷贝的区别 浅拷贝 深拷贝 总结 浅拷贝 对一个已知对象进行拷贝,编译系统会自动调用一种构造函数--拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数,调用一次构造函数 ...

最新文章

  1. Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)
  2. R语言PCA主成分分析(Principle Component Analysis)实战1
  3. python编程 语言-Python——最美丽的编程语言
  4. spring BeanPostProcessor,BeanFactoryPostProcessor作用
  5. vim trick之 vimrc更改立即生效
  6. 阿里巴巴对Java编程【并发处理】的规约
  7. Java学习笔记之:Java String类
  8. 论文浅尝 - ICLR2020 | 用于半监督分类的图形推理学习
  9. 如何将 Apple Watch 用作闹钟?
  10. Java数据库连接协议JDBC学习
  11. (老机福音,重装后恢复软件设置)Ghost_XP_战神 V11 老机版
  12. 基于物理的体积光实现
  13. AutoCAD .Net 创建椭圆Ellipse
  14. vue用post请求下载文件
  15. mysql 存正负数_mysql 存储负数
  16. dzz云桌面1.2部分主要功能图文介绍
  17. 一文带小白玩转NFC、门禁卡
  18. VMware vSphere 6.7 虚拟化搭建及配置完整详细手册 | 周末送资料
  19. 疑似STM32CAN进入bus off 模式
  20. 文华编程是c 语言吗,文华财经编程规则

热门文章

  1. 如何把notepad++添加到右键菜单
  2. 数仓_范式建模/维度建模
  3. 我拿到了梦寐以求的字节跳动和腾讯双offer!成功入职字节跳动
  4. 烟台房价低于青岛高于威海 环渤海区城市中位居第9
  5. SEMI-E37 HSMS协议介绍
  6. 衡量人体健康的“十大新标杆” zhuanzai
  7. 【数据结构】顺序表的增删查改 (C语言实现)
  8. 2022-2月股票投资实战------中国电信
  9. 山大考研分数线2018计算机,2018年山东大学考研复试分数线已公布
  10. Cache组成及工作原理