#include "pch.h"
#include <iostream>
#include <string>
#include "SglList.h"
using namespace std;
//拷貝 賦值
class String
{
public:
String(const char *s = NULL);
String(const String &s);
~String();
String &operator = (const String &s);
char *Print();
private:
char *m_String;
};
String::String(const char *s)
{
if (s == NULL)
{
m_String = new char[1];
*m_String = '\0';
}
else
{
m_String = new char[strlen(s) + 1];
strcpy_s(m_String, strlen(s) + 1, s);
}
}
String::String(const String &s)
{
m_String = new char[strlen(s.m_String) + 1];
strcpy_s(m_String, strlen(s.m_String) + 1, s.m_String);
}
String::~String()
{
if (m_String != NULL)
{
delete[] m_String;
m_String = NULL;
}
}
String &String::operator=(const String &s)
{
if (&s != this)
{
delete[] m_String;
m_String = new char[strlen(s.m_String) + 1];
strcpy_s(m_String, strlen(s.m_String) + 1, s.m_String);
}
return *this;
}
char *String::Print()
{
return m_String;
}
int main()
{
String s("hello");
String t(s);
String r("worl77d");
r = s;
cout << "s = " << s.Print() << '\t' << "t = " << t.Print() << '\t' << "r = " << r.Print() << endl;
}