c++ 浅拷贝和深拷贝
发布日期:2021-05-06 23:05:09 浏览次数:24 分类:精选文章

本文共 339 字,大约阅读时间需要 1 分钟。

class with point member(带指针的类),一定有copy ctor(拷贝构造)和copy op=(拷贝赋值)

浅拷贝(讲这个概念是为了跟你解释为什么一定要写自己的版本):

如果你不写拷贝构造和拷贝赋值,系统会为你默认生成这两个函数。

而用系统里面默认生成的函数,则会发生下图中a和b的指针都指向“HELLO”,而“WORLD”没有指针指着它(这种情况叫内存泄漏)。

两个指针指向同一块内存也是危险的,因为你通过a改变字符串的时候,b所指的内容也会随之改变。如图:

在编程里面。alias(别名)是一件危险的事情。

 

深拷贝如下图(拷贝构造的例子)

上图是自己写的拷贝构造函数:调用该函数之后,系统先申请内存,然后把传入的参数拷贝到新申请的空间上,这就是深拷贝。

上一篇:socket编程 套接字编程 (纯理论)
下一篇:strlen 与sizeof()的区别

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年03月21日 21时43分32秒