1.拷贝构造函数是与类名相同,其形参是本类的对象的引用。
2.拷贝构造函数会在以下三种情况下被调用:
1).当用类的一个对象去初始化该类的另一个对象时。
2).如果函数的形参是类的对象,调用该函数,将对象作为函数实参传递给函数的形参时。
3).如果函数的返回值是类的对象,函数执行完成,将返回值返回时。
3.浅拷贝的失败例子:
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 7 class str 8 { 9 private: 10 char *s; 11 int len; 12 public: 13 str() 14 { 15 len=0; 16 s=NULL; 17 } 18 str(const char *p) 19 { 20 len=strlen(p); 21 s=new char[len+1]; 22 strcpy(s,p); 23 } 24 ~str() 25 { 26 if(s!=NULL) 27 { 28 delete []s; 29 s=NULL; 30 } 31 } 32 }; 33 34 int main() 35 { 36 str s1("I love you!"); 37 str s2=s1; //这里会发生错误。 38 return 0; 39 }