复制构造函数(拷贝函数)
复制构造函数
格式:
类名(const 类名& 引用对象名)
{ 复制构造函数体 }
类对象的复制
1 |
|
复制构造函数调用时机
1.对象通过另一个对象进行初始化
2.对象以值传递的方式传入函数参数
1 | void fun(data d) |
3.对象以值传递的方式从函数返回
1 | data fun() |
注意:以上复制构造函数由编译系统自动调用,编写
深浅复制
浅拷贝(慎用)
概念:也称位拷贝,编译器只是将对象中的值采用基本类型值复制的方式拷贝过来,如果对象中管理资源,就会导致多个对象共享同一份资源(资源泄露),当一个对象销毁时就会将该资源释放,而此时另一些对象不知道该资源已经被释放,以为该资源还有效,所以当继续对资源进行操作时,就会发生访问违规。
深拷贝
概念: 在“深拷贝”的情况下,对于对象中动态成员,就不能仅仅简单地赋值了,而应该重新动态分配空间
注:浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
即:动态分配空间地址冲突访问问题。
待补充!!!!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FadeAway Space!
评论