题目:
实现String类的构造函数、析构函数并重载赋值操作符。
解答:
class String{
public:
String();
String(const char *pStr);
String(const String &str);
String &operator=(const String &str);
virtual ~String();
private:
char *data;
};
String::String()
{
data = new char[1];
data[0] = '\0';
}
String::String(const char * pStr)
{
if(pStr == NULL)
{
data = new char[1];
data[0] = '\0';
}
else
{
data = new char[strlen(pStr) + 1];
strcpy(data, pStr);
}
}
String::String(const String &str)
{
data = new char[strlen(str.data) + 1];
strcpy(data, str.data);
}
String & String::operator=(const String &str)
{
if(&str == this)
return *this;
delete[] data;
data = new char[strlen(str.data) + 1];
strcpy(data, str.data);
return *this;
}
String::~String()
{
delete[] data;
}