拷贝构造函数----深拷贝、浅拷贝
来源:互联网 发布:猪八戒淘宝刷销量 编辑:程序博客网 时间:2024/05/17 06:56
拷贝构造函数----深拷贝、浅拷贝
【何时调用拷贝构造函数】:
1-函数的参数时该对象时(按值传入)
2-函数的返回值是该对象时
3-该类对象的其中一个对象需要通过另一个对象进行初始化时。
【浅拷贝复制的缺陷】:
当复制的对象为动态申请内存的对象时,浅拷贝复制的对象,乍一看时对象进行了复制,其实是对其指针进行了复制。
既,对象的内容没真正的拷贝过去,而是将其地址拷贝了过去。
此时若对原始对象进行修改,复制后的对象也会改变(相当于通过指针进行改变),出错!
同时,释放内存时,相当于动态分配指针的内存区域释放了两次(二者占有同一份内存空间,都是对同一个指针进行了释放),导致运
行错误!
【解决方法】:
1-自己编写拷贝构造函数,实现深拷贝。
2-自己编写析构函数,实现对不同内存区域的释放。
【深拷贝构造函数】:
就是对复制对象的每个元素进行复制,而不是仅仅复制指针。
例如:
Matrix::Matrix(const Matrix& a)
{
int i, j;
{
int i, j;
m = new int*[a.lines];
for (i = 0;i < a.lines;i++)
m[i] = new int[a.rows];
for (i = 0;i < a.lines;i++)
m[i] = new int[a.rows];
for (i = 0;i < a.lines;i++)
for (j = 0;j < a.rows;j++)
m[i][j] = a.m[i][j];
}
for (j = 0;j < a.rows;j++)
m[i][j] = a.m[i][j];
}
阅读全文
1 0
- 拷贝构造函数 深拷贝 浅拷贝
- 拷贝构造函数(深拷贝,浅拷贝)
- 拷贝构造函数浅拷贝深拷贝
- 拷贝构造函数,浅拷贝,深拷贝
- 拷贝构造函数 深拷贝 浅拷贝
- 拷贝构造函数----深拷贝、浅拷贝
- 拷贝构造函数与赋值函数;深拷贝,浅拷贝
- 深拷贝、浅拷贝构造函数问题
- 深拷贝、浅拷贝构造函数
- 复制构造函数&深拷贝&浅拷贝
- 默认拷贝构造函数,浅拷贝,深拷贝
- C++拷贝构造函数(深拷贝,浅拷贝)
- C++拷贝构造函数(深拷贝,浅拷贝)
- C++拷贝构造函数(深拷贝,浅拷贝)
- 5.c++-拷贝构造函数(深拷贝,浅拷贝)
- 拷贝构造函数(深拷贝和浅拷贝)
- C++拷贝构造函数(深拷贝,浅拷贝)
- C++拷贝构造函数(深拷贝,浅拷贝)
- Appium基础篇9-元素定位之by_xpath
- Centos下安装Mysql
- 【Hibernate】聚集函数
- 小学期 合并果子
- C#中(int)、Conver.Toint32()、int.Parse()三种类型转换方式的区别与联系--C#基础知识
- 拷贝构造函数----深拷贝、浅拷贝
- C# 面试图解
- 仿微信朋友圈发表图片拖拽和删除功能
- 联发科初赛第二题《情报破译》
- 大根堆的建立(python)
- Selenium&&PhantomJS获取网站中的JS返回的数据
- hdfs网络拓扑与机架感知
- 【C++】联发科初赛第一题《最大序列和》
- javawebday04(dom dhtml概述 获取打开页面的源页面)