C++拷贝构造
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
class Copy
{
char * arr;
public:
Copy(char *arrp = "no str"):arr(arrp)
{
arr = new char[strlen(arrp)+1];
if(arr)
strcpy(arr,arrp);
printf("----%s\r\n",arr);
}
Copy(const Copy & arrp)
{
printf("constuct....%s\r\n",arrp.arr);
this->arr = new char[sizeof(strlen(arrp.arr))+1];
if(this->arr)
strcpy(arr,arrp.arr);
}
Copy & operator=(Copy& arrp)
{
printf("copy....%s\r\n",arrp.arr);
if(this==&arrp) return *this;
delete[] this->arr;
this->arr = new char[sizeof(strlen(arrp.arr))+1];
if(this->arr)
strcpy(this->arr,arrp.arr);
return *this;
}
~Copy()
{
printf("DIST----%s\r\n",arr);
delete[] arr;
}
};
int main()
{
Copy a;
Copy b("ccddd");
Copy c(b);
Copy d("xxxxx");
c = d;
Copy e = d;
}