深拷贝和浅拷贝只是针对于指针,
浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题
这个默认的拷贝构造函数采用的是“位拷贝”(浅拷贝),而非“值拷贝”(深拷贝)的方式,如果类中含有指针变量,默认的拷贝构造函数必定出错。
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 }