#include "String.h"
#include <iostream.h>
#include <string.h>
String::String()
{
cout << "无参构造函数被调用" << endl;
len = 0;
m_data = new char[1];
m_data[0] = '\0';
}
String::String(char *str)
{
cout << "带参构造函数被调用" << endl;
len = strlen(str);
m_data = new char[len + 1];
strcpy(m_data, str);
}
String::String(const String &other)
{
cout << "拷贝构造函数被调用" << endl;
len = other.len;
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
String & String::operator =(const String &other) //赋值函数
{
cout << "重载 = 函数被调用" << endl;
if(this == &other)
{
return *this;
}
delete [] m_data;
len = other.len;
m_data = new char [len + 1];
strcpy(m_data, other.m_data);
return *this;
}
String::~String()
{
cout << "析构函数被调用" << endl;
delete [] m_data;
}
void String::display()
{
cout << "m_data= " << m_data << " len = " << len << endl;
}
String operator + (const String &s1, const String &s2)
{
cout << "重载 + 函数被调用" << endl;
String temp;
delete temp.m_data;
temp.len = s1.len + s2.len;
temp.m_data = new char [temp.len + 1];
strcpy(temp.m_data, s1.m_data);
strcat(temp.m_data, s2.m_data);
return temp;
}