具体代码:
class String
{
public:
String(const char *str = NULL); //默认构造函数
String(const String &other); //赋值构造函数
~String(void);
String & operator =(const String & other); //赋值函数
private:
char *m_data;
};
String::String(const char *str )
{
if ( str != NULL )
{
int len = strlen(str);
m_data = new char[len+1];
strcpy(m_data,str);
}
else //这部分不要拉掉
{
m_data = new char[1];
*m_data = '\0';
}
}
String::String(const String &other) //赋值
{
int len = sizeof(other.m_data);
m_data = new char[len+1];
strcpy(m_data, other.m_data);
}
String & String::operator =(const String &other)
{
//1:检测是否是自赋值
if ( this == &other )
return *this;
//2:释放原有的内存资源
delete [] m_data;
//3:分配新的内存资源,并复制内容
int len = strlen(other.m_data);
m_data = new char[len+1];
strcpy(m_data, other.m_data);
//4:返回本对象的引用
return *this;
}
String::~String(void)
{
delete [] m_data;
}