这一部分的实现仅仅是构造生成并且能够打印,下面是代码:
class String
{
public:
String(const char* str = "")
{
if (nullptr == str)
{
str = "";
}
_str = new char[strlen(str) + 1];
strcpy(_str, str);
}
String(const String& s)
:_str(new char[strlen(s._str) + 1])
{
strcpy(_str, s._str);
}
void Print()
{
cout << _str << endl;
}
String& operator=(const String& s)
{
if (this != &s)
{
char* pStr = new char[strlen(s._str) + 1];
strcpy(pStr, s._str);
delete[]_str;
_str = pStr;
}
return *this;
}
friend ostream& operator<<(ostream& _cout, const String& s)
{
_cout << s._str;
return _cout;
}
~String()
{
if (_str)
{
delete[]_str;
_str = nullptr;
}
}
private:
char *_str;
};
void TestString()
{
String s1("hello world");
String s2(s1);
cout << s1 << endl;
/*String s2;
s2 = s1;*/
s2.Print();
/*cout << s1;*/
}
int main()
{
TestString();
system("pause");
return 0;
}