版权声明:本文为博主原创文章,但是欢迎转载! https://blog.csdn.net/yancola/article/details/83350944
已知类String的原型为:
class String
{
public:
String(const char *str = nullptr);//普通构造函数
String(const String &other);//复制构造函数
String & operator =(const String &other);//赋值函数
~String();//析构函数
private:
char *m_text;
}
实现:
String::String(const char *str)
{
if(str == nullptr)//如果str为空,令m_text存空字符串""
{
m_text = new char[1];//分配一个字节用于存字符串结束符'\0'
*m_text = '\0';
}
else
{
m_text = new char[strlen(str) + 1];
strcpy(m_text, str);
}
}
String::String(const String &other)
{
m_text = new char[strlen(other.m_text) + 1];
strcpy(m_text, other.m_text);
}
String & String::operator=(const String &other)
{
if(this == &other)
{
return *this;
}
delete [] m_text;
m_text = new char[strlen(other.m_text) + 1];
strcpy(m_text, other.m_text);
return *this;
}
String::~String()
{
if(m_text != nullptr)
{
delete [] m_text;
m_text = nullptr;
}
}