[CareerCup] 13.4 Depp Copy and Shallow Copy 深拷贝和浅拷贝
2015-10-31 03:19
387 查看
13.4 What is the difference between deep copy and shallow copy? Explain how you would use each.
这道题问深拷贝和浅拷贝的区别。浅拷贝复制对象中所有的成员值到另一个对象中,而深拷贝不仅复制这些,还复制所有的指针对象,参见下面代码:
浅拷贝有时会引起许多的运行错误,尤其是在创建和删除对象的时候。在使用浅拷贝的时候务必要小心,必须要完全明白程序在做什么。通常我们在传递复杂结构的信息时不需要赋值实际数据时在使用浅拷贝,必须对析构浅拷贝的对象格外注意。
实际应用中,浅拷贝并不经常使用。深拷贝应该是大多是情况下使用的,尤其是当要拷贝的结构体不大时。
这道题问深拷贝和浅拷贝的区别。浅拷贝复制对象中所有的成员值到另一个对象中,而深拷贝不仅复制这些,还复制所有的指针对象,参见下面代码:
struct Test { char *ptr; }; void shallow_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); }
浅拷贝有时会引起许多的运行错误,尤其是在创建和删除对象的时候。在使用浅拷贝的时候务必要小心,必须要完全明白程序在做什么。通常我们在传递复杂结构的信息时不需要赋值实际数据时在使用浅拷贝,必须对析构浅拷贝的对象格外注意。
实际应用中,浅拷贝并不经常使用。深拷贝应该是大多是情况下使用的,尤其是当要拷贝的结构体不大时。
相关文章推荐
- apache的rewrite_module模块加载
- nginx的502错误
- Linux内核空间和用户空间详解
- linux常用命令-date-clock-hwclock-type-whois--help-man-info-cal
- Nginx平滑升级和平滑重启
- Eclipse安装tomcat插件详解
- 终极 Shell——ZSH
- linux内核定时器struct timer_list
- Nginx+PHP平台搭建(Linux+Nginx+Mysql+PHP)
- linux下提示bash:command not found
- Linux useradd命令执行,出现 bash:useradd:command not found
- Nginx优化
- docker实践(1) 在ubuntu15.10里面安装docker
- apache与tomcat实现动静分离--uriworkermap.propertie
- Ubuntu下arm-linux-gcc编译环境的搭建
- 怎样在Linux环境编译支持C11
- linux 删除已输入的命令
- 使用freamset和fream做分页网站的好处(thinlphp)
- Ubuntu 14.04.3 LTS Desktop x64安装WPS
- CentOS 5.6 64位 重编译Hadoop 2.6.0