关于深拷贝和浅拷贝的疑问

  深拷贝和浅拷贝只是针对于指针, 

  浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题

这个默认的拷贝构造函数采用的是“位拷贝”(浅拷贝),而非“值拷贝”(深拷贝)的方式,如果类中含有指针变量,默认的拷贝构造函数必定出错。

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 class Test
 6 {
 7 public:
 8     Test (const char*mp)
 9     {
10         m_len=strlen(mp);
11         m_p=(char *)malloc(m_len+1);
12         strcpy(m_p,mp);
13     }
14     Test (const Test &t1)
15     {
16         m_len=t1.m_len;//写这个函数的时候要多加注意
17         m_p=(char *)malloc(m_len+1);
18         strcpy(m_p,t1.m_p);
19     }
20     ~Test ()
21     {
22         if(m_p!=NULL)
23         {
24             free(m_p);
25             m_p=NULL;
26             m_len=0;
27         }
28     }
29 private:
30     int m_len;
31     char*m_p;
32 protected:
33 };
34 int main()
35 {
36     Test obj0="renshanbeigouqi";
37     Test obj1=obj0;
38     system("pause");
39 }
原文地址:https://www.cnblogs.com/xiaochige/p/6572516.html