????????????????????????????
????????????????????????????????????δ???????????????????????£???????????????????——????????????????????????????????????????????????????????е????????????????????????????ü?????????????????е????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????
?????????????????????????char *m_data;
?????????????????????????????????????????????????????????????????ú????????????????????????????2?Σ???delete???????2?Σ????????????
?????????????????obj.m_data??obj1.m_data?????????棬?κ?????????????????????
???????????????????????????obj1.m_data??е??????б???????仰???????????????????????????????????????????????A obj1(obj);??????????????????????????????????????????????????????????obj1.m_data??е??????б???????????????????????????????й???
??????????????????delete obj.m_data?? obj.m_data??汻??????????obj.m_data??obj1.m_data???????????????obj1.m_data???????????????????delete obj1.m_data????????????????????????????????????й??? ???????????????????????μ??????洢???????????????????????????
??????????????????????????????????????A?????????A obj;  A obj1(obj);????A obj1 = obj; ??????????????忽??????????C++???????????????????????????????????????????????????????“λ????”???????????????“?????”????????????????????к????????????????????????????????
??????????????????????????????????????????????????????????????????????????????п???????????????????????п?????????????????????????????????????
#include<iostream>
using namespace std;
class String
{
public:
char* GetChar()
{
return _ptr;
}
void swap(String&s)
{
char* tmp = s._ptr;
s._ptr = _ptr;
_ptr = tmp;
}
String(char*str)
:_ptr(new char[strlen(str) + 1])
{
strcpy(_ptr?? str);
}
String(const String&s)
:_ptr(NULL)
{
String tmp(s._ptr);
swap(tmp);
}
String& operator=(const String&s)
{
if (this != &s)
{
String tmp(s._ptr);
swap(tmp);
}
return *this;
}
~String()
{
if (_ptr)
{
delete[]_ptr;
}
}
private:
char* _ptr;
};
int main()
{
String s1("abcd");
String s2(s1);
String s3("efghs");
s3 = s2;
cout<< "s1:" << s1.GetChar() << endl;
cout<< "s2:" << s2.GetChar() << endl;
cout << "s3:" << s3.GetChar() << endl;
return 0;
}