64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <cstring>
using namespace std;
class String
{
public:
String(const char* str = NULL); // 你这里少了char*,我说看着很奇怪
String(const String &src);
~String();
String& operator=(const String& stringSrc); // operator 拼错了..
void Show()
{ cout << m_data << endl; }
private:
char *m_data;
}; // 你这里少分号,低级错误
int main() // for testing
{
String obj1("For testing");
String obj2(obj1);
obj1.Show();
obj2.Show();
String obj3("New testing");
String obj4 = obj2 = obj3;
obj4.Show();
obj2.Show();
return 0;
}
String::String(const char* str) // 构造函数
{
if (NULL == str)
{
m_data = NULL;
return;
}
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
String::String(const String &src) // 拷贝构造
{
m_data = new char[strlen(src.m_data) + 1];
strcpy(m_data, src.m_data);
}
String::~String() // 析构
{
delete[] m_data;
m_data = NULL;
}
String& String::operator=(const String& stringSrc) // 重载赋值
{
delete[] m_data;
m_data = new char[strlen(stringSrc.m_data) + 1];
strcpy(m_data, stringSrc.m_data);
return (String&)(*this);
}