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

来源:互联网 发布:mysql 手册 编辑:程序博客网 时间:2024/05/21 11:26

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

 

浅拷贝

 

执行逐个字节的复制工作

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. MyString S1, S2;//假设MyString类里有个char *类型的指针str 并且已经重载过运算符可以直接赋值字符串字面值  
  2. S1 = “this”;  
  3. S2 = “that”;  
  4. S1 = S2;  

 

浅拷贝实际过程

 

 

深拷贝

 

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

 

深拷贝实际过程

 

 

深拷贝代码实现过程

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. String & operator = (const String & s) {  
  2.     if(str == s.str) return * this//防止 s = s ;出错   
  3.      if(str)     delete [] str;  
  4.     str = new char[strlen(s.str)+1];  
  5.     strcpy(str , s.str);  
  6.     return * this;  
  7. }  


 


 

0 0