#include <iostream>
using namespace std;
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);
}
String& operator = (const String& s)
{
if (this != &s)
{
char* temp = new char[strlen(s._str) + 1];
strcpy(temp, s._str);
delete[] _str;
_str = temp;
}
return *this;
}
~String()
{
if (_str)
{
delete[] _str;
_str = nullptr;
}
}
private:
char* _str;
};
void TestString1()
{
String s1;
String s2("hello");
String s3(nullptr);
String s4(s2);
String s5("world");
s2 = s4;
}
int main()
{
TestString1();
return 0;
}
#include <iostream>
using namespace std;
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(nullptr)
{
String strTemp(s._str);
std::swap(_str, strTemp._str);
}
String& operator = (String s)
{
std::swap(_str, s._str);
return *this;
}
~String()
{
if (_str)
{
delete[] _str;
_str = nullptr;
}
}
private:
char* _str;
};
void TestString1()
{
String s1("hello");
String s2(s1);
}
String TestString2()
{
String s("hello");
return s;
}
String TestString3()
{
String s1("hello");
String s2("world");
s1 = s2;
}
int main()
{
TestString1();
TestString2();
TestString3();
return 0;
}