自我理解:
浅拷贝类似COW中的第一步:b指向a的内存地址(逻辑上独立,物理上不独立)
深拷贝类似COW中的第二步:b复制了a的资源,并写入(物理上已经独立)
C++ 的构造/析构/赋值/拷贝函数
http://blog.chinaunix.net/space.php?uid=21411227&do=blog&cuid=2244350
很赞:
好文章:
位拷贝/值拷贝:浅拷贝/深拷贝
以string 为例
string *p,*q;
p=new string("asd");
如果是浅拷贝,那么
q=p;
如果是深拷贝,
q=new string("asd");
浅拷贝 就是相当于只是让指针指向同一块内存区域,一旦该内存区域被释放
那么 所有指向这个内存区的 指针(p和q)都会无效
但是深拷贝 是另外再分配一块内存区域,并且复制起内容,如果q指向的内存区域 被释放,p指向的内存区域不会首影响
和拷贝构造函数没什么关系
只不过 如果你要重写拷贝构造函数 或者是 =函数,或者其他自定义的函数
则要根据情况选择是用深拷贝还是用浅拷贝的方式去 写
阅读(1359) | 评论(0) | 转发(0) |