使用拷贝构造函数的理由和作用【整理】
2017-02-12 20:50
218 查看
因为在系统的学习c++之前,自己写了一些小玩意,虽然没有写拷贝构造函数,但是也没有报错。等到真正学习到的时候,就非常疑惑,为什么要使用拷贝构造函数呢?不写不是也可以吗?(⊙﹏⊙)b
然后,不久之后我就跪了【后来才知道是因为类里含有指针变量】
因为如果不写拷贝构造函数,系统就只会调用默认构造函数,然而默认构造函数是一种浅拷贝。相当于只对指针进行了拷贝(位拷贝),而有些时候我们却需要拷贝整个构造函数包括指向的内存,这种拷贝被称为深拷贝(值拷贝)。
所以为了达成深拷贝的目的,自己手写拷贝构造函数是非常必要的。
下面由浅入深的推荐三个博客的内容。
超级传送门:
http://www.cnblogs.com/this-543273659/archive/2011/09/18/2180575.html 1
http://www.cnblogs.com/huhuuu/p/3490925.html 2
http://www.cnblogs.com/findumars/p/5804860.html 3
然后,不久之后我就跪了【后来才知道是因为类里含有指针变量】
因为如果不写拷贝构造函数,系统就只会调用默认构造函数,然而默认构造函数是一种浅拷贝。相当于只对指针进行了拷贝(位拷贝),而有些时候我们却需要拷贝整个构造函数包括指向的内存,这种拷贝被称为深拷贝(值拷贝)。
所以为了达成深拷贝的目的,自己手写拷贝构造函数是非常必要的。
下面由浅入深的推荐三个博客的内容。
超级传送门:
http://www.cnblogs.com/this-543273659/archive/2011/09/18/2180575.html 1
http://www.cnblogs.com/huhuuu/p/3490925.html 2
http://www.cnblogs.com/findumars/p/5804860.html 3
相关文章推荐
- static关键字理解整理:静态变量、静态函数的作用及使用规则
- 使用SSE指令优化的数学函数(整理)
- Java Q&A: 使用Singleton模式?给我一个理由先!
- 目前使用BCB的理由
- France 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)
- Norway & Sweden & Switzerland 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)
- Intermezzo 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)
- 喜欢使用IntelliJ Idea的25个理由(转)
- Chantress 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)
- Classical-Music 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)
- 我喜欢使用IntelliJ Idea的25个理由
- [整理]使用存储过程封装应用逻辑的优缺点[转贴]
- 整理:J2SE5枚举使用范例
- 目前使用BCB的理由
- 选择 PostgreSQL 的理由(整理)
- 在 ASP.NET 中使用计时器(Timer)的整理
- 在 ASP.NET 中使用计时器(Timer)的整理(2003/10/23 20:36)
- 本人整理好的一些JavaScript函数提供给初学者的朋友们使用
- 开始整理一些WAS使用的文章
- Jazz 目录 (2005.03.22/ 整理和使用ShitMp3 修改MP3信息)