Cpp_拷贝构造与拷贝赋值
来源:互联网 发布:我知你忌讳是什么意思 编辑:程序博客网 时间:2024/06/05 09:16
1.深拷贝与浅拷贝
如果一个类包含指针形式的成员变量,系统提供的缺省拷贝构造函数,只是复制了指针成员变量本身,而没有复制该变量所指向的内容,这种拷贝方式被称为浅拷贝。浅拷贝将导致不同对象间的数据共享,同时会在析构函数中引发”double free”异常。为此就必须自己定义一个支持复制内容即深拷贝的拷贝构造函数。
2.类的缺省拷贝赋值
类的缺省拷贝赋值同样对于基本类型成员变量按字节复制,因此和缺省拷贝构造函数一样,是浅拷贝。为了得到深拷贝的赋值效果,就需要自己定义一个支持深拷贝的拷贝赋值运算符函数。
1)防止自赋值 2)分配新资源 3)释放旧资源 4)复制新内容 5)返回自引用 6)复用拷贝构造和析构
3.忠告和建议
1)尽量避免是指针形式的成员变量;
2)尽量避免拷贝构造和拷贝赋值;
3)如果拷贝构造支持深拷贝,那么拷贝赋值就也应该支持深拷贝,反之亦然。
4)处于具体原因,确实无法实现深拷贝的拷贝构造和拷贝赋值,可以将拷贝构造函数和拷贝赋值运算符函数声明为私有函数,禁止用户使用。
0 0
- Cpp_拷贝构造与拷贝赋值
- 拷贝构造与拷贝赋值
- 拷贝构造函数 与 拷贝赋值函数
- C++之拷贝构造与拷贝赋值
- 拷贝构造与赋值函数
- 拷贝构造函数与赋值函数;深拷贝,浅拷贝
- 拷贝构造函数与赋值构造函数
- 拷贝构造函数与赋值构造函数
- 拷贝构造函数与赋值构造函数
- 拷贝构造函数与赋值构造函数
- 拷贝构造函数与赋值构造函数
- 拷贝构造函数与赋值构造函数
- 构造、拷贝构造、赋值
- 拷贝构造 赋值构造
- 拷贝构造和拷贝赋值
- 拷贝构造与拷贝赋值运算符几点摘记
- 拷贝构造函数与拷贝赋值操作符
- C++中拷贝构造函数与拷贝赋值操作符
- Android ListView 的基本用法
- R语言学习:数据结构6-缺失值
- 编写用户侧定时器
- 【quickSort】
- linux学习之c注释
- Cpp_拷贝构造与拷贝赋值
- 数据切分——Atlas读写分离Mysql集群的搭建
- CF 116A Tram
- 如何查找openCV函数源代码
- 括号匹配(栈和队列)
- PHP之有关类和对象的系统函数与运算符
- 2015年终总结-青春如歌
- 递归神经网络(RNN)简介
- Setting Up the Action Bar --1.1.1