您的位置:首页 > 编程语言 > C语言/C++

【C++】深拷贝和浅拷贝

2015-07-23 16:53 267 查看
浅拷贝会将对象所有成员的值拷贝到另一个对象里。

深拷贝除了拷贝所有成员的值,还会进一步拷贝所有指针对象。

/*
* copy.cpp
*
* Created on: 2015?7?23?
* Author: nanzhou
*/
struct Test {
char* ptr;
};

void shadow_copy (Test & src, Test & dest) {
dest.ptr = src.ptr;
}

void deep_copy (Test & src, Test & dest) {
dest.ptr = (char*) malloc(strlen(src.ptr) + 1);
strcpy(dest.ptr, src.ptr);
}



shadow_copy()可能会导致大量编程运行时错误,尤其是在对象创建和销毁时。使用浅拷贝时,必须非常小心,只有当开发人员真正知道自己在做些什么时,方可选用浅拷贝。

多数情况下,使用浅拷贝是为了传递一块复杂结构的信息,但又不想真的复制一份数据。

使用浅拷贝时,销毁对象必须非常小心。

在实际开发中,浅拷贝很少使用。大部分情况都应该使用深拷贝,尤其是当需要拷贝的结构很小时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: