码迷,mamicode.com
首页 > 编程语言 > 详细

初探C++ 深拷贝与浅拷贝

时间:2014-07-08 16:42:40      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:c   c++   深拷贝   浅拷贝   运算符重载   

赋值运算符的意义 - 浅拷贝与深拷贝

 

浅拷贝

 

执行逐个字节的复制工作

 

MyString S1, S2;//假设MyString类里有个char *类型的指针str 并且已经重载过运算符可以直接赋值字符串字面值
S1 = “this”;
S2 = “that”;
S1 = S2;

 

浅拷贝实际过程

bubuko.com,布布扣

 

 

深拷贝

 

将一个对象中指针变量指向的内容复制到另一个对象中指针成员对象指向的地方。

 

深拷贝实际过程

 

 

bubuko.com,布布扣

 

 

深拷贝代码实现过程

 

String & operator = (const String & s) {
    if(str == s.str) return * this; //防止 s = s ;出错 
     if(str)     delete [] str;
    str = new char[strlen(s.str)+1];
    strcpy(str , s.str);
    return * this;
}


 





 

初探C++ 深拷贝与浅拷贝,布布扣,bubuko.com

初探C++ 深拷贝与浅拷贝

标签:c   c++   深拷贝   浅拷贝   运算符重载   

原文地址:http://blog.csdn.net/wangxiaobupt/article/details/37340477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!