经过了漫长的不知忙什么的时间之后,我终于来补代码了……
#include<iostream>
#include<cstring>
using namespace std;
class A
{
private:
char *a;
public:
A(const A &obj)
{
a=new char [strlen(obj.a)+1];
strcpy(a,obj.a);
}
A(char *aa)
{
a=new char [strlen(aa)+1];//这样处理的意义在于:分配一个长度合适的内存空间来储存这一串字符串,而+1在于多分配一个字符空间给'\0'。
strcpy(a,aa);//数据成员a和形式参数aa的关系:aa指向的字符串复制给a指向的内存空间。
}
~A()
{
delete []a;//此处意义在于释放new运算分配的内存空间。
}
void output()
{
cout<<a<<endl;
}
};
int main()
{
A a("good morning,code monkeys!");
a.output();
A b("good afternoon,codes!");
b.output();
A c(a);
c.output();
return 0;
}
当你看到了这如此贴心的注释的时候,你大概也就猜到了,这并不是由本人亲自手写的代码,而是CTRL+C复制而来的……
所谓深复制大概就是指的这种方式吧?通过指针来达到自己的目的。(这种大实话没必要说了!没错可是我实在是不知道有什么很专业的话来突显这种办法很牛逼请原谅我的无知……)