64,646
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
class mystring
{
char *m_data;
public:
mystring(const char *str=NULL);
mystring(const mystring &other);
~mystring(void);
mystring &operator=(const mystring &other);
void print();
};
mystring::mystring(const char *str)
: m_data (0)
{
//m_data=new char(strlen(str)+1);
m_data=new char[strlen(str)+1];
strcpy(m_data,str);
}
mystring::mystring(const mystring &other)
: m_data(0) //必须的
{
if (m_data)
{
delete [] m_data;
m_data = 0;
}
//m_data=new char(strlen(other.m_data)+1);
m_data=new char[strlen(other.m_data)+1];
strcpy(m_data,other.m_data);
}
// 这里这么写
mystring::~mystring(void)
{
if (m_data)
delete []m_data;
m_data = 0;
cout<<"wie "<<endl;
}
mystring& mystring::operator=(const mystring& other)
{
if(this == &other)
return *this;
// 需要先释放
if (m_data)
{
delete [] m_data;
m_data = 0;
}
int len = strlen(other.m_data);
m_data = new char[len+1];
strcpy(m_data,other.m_data);
return *this;
}
void mystring::print()
{
cout<<m_data<<endl;
}
#include <iostream>
using namespace std;
int main()
{
mystring a("gaoyupeng");
mystring b(a);
b.print();
cout<<endl;
mystring c("c++");
b=c;
b.print();
system("PAUSE");
return 0;
}