String.h
#include<iostream>
using namespace std;
class String
{
public:
String(const char *str = NULL); //普通构造函数
String(const String &other); //拷贝构造函数
~String(); //析构函数
String &operator = (const String & other); // 赋值函数
private:
char *m_data;//用于保存字符串
};
String.cpp
#include "String.h"
String ::String(const char *str ){
if (str != NULL)
{
int len = strlen(str);
m_data = new char[len+1];
strcpy(m_data,str);
m_data[len] = '\0';
}
else{
m_data = new char[1];
*m_data = '\0';
}
}
String::~String(){
if(m_data != NULL){
delete(m_data) ;
m_data = NULL;
}
}
String::String(const String &other){
int len = strlen(other.m_data);
m_data = new char[len+1];
strcpy(m_data,other.m_data);
m_data[len] = '\0';
}
String & String::operator =(const String& other){
if (this == &other)
{
return *this;
}
delete m_data;
int len = strlen(other.m_data);
m_data = new char[len+1];
strcpy(m_data,other.m_data);
return *this;
}