一、深拷贝的步骤可以总结为:
p = char[strlen(a)+1];
strcpy_s(p,strlen(a)+1,a);
二、一些注意事项:
1、在复制字符串时,使用
strcpy_s(char*,n,char*)
2、析构函数,一定要自己把资源释放掉,且把指针置空
3、一般是针对char*的字符串进行深拷贝,对于string不需要考虑深浅可以直接使用“=”赋值操作
三、具体
class A{
public:
A(int t1,char* t2,std::string t3):a(t1),c(t3){
if(t2==nullptr){
assert(false);
return;
}
b=new char[strlen(t2)+1];
strcpy_s(b,strlen(t2)+1,t2);
}
A(const A& q){
if(q.b==nullptr){
assert(false);
return;
}
a=q.a;
b=new char[strlen(q.b)+1];
strcpy_s(b,strlen(q.b)+1,q.b);
c=q.c;
}
~A(){
delete b;
b=nullptr;
}
private:
int a;
char* b;
std::string c;
}