String类的实现
String.h头文件
#ifndef _STRING1_H_
class CString1
{
public:
CString1(char *data=nullptr);
~CString1();
CString1(const CString1 &other);
CString1& operator=(const CString1 &other);
private:
char *m_data;
};
#endif
String.cpp源文件
#include "String1.h"
#include <string.h>
CString1::CString1(char *data)
{
if (nullptr == data)
{
m_data = new char;
*m_data = '\0';
}else
{
int len = strlen(data);
m_data = new char[len + 1];
strcpy(m_data, data);
}
}
CString1::~CString1()
{
delete[] m_data;
m_data = nullptr;
}
CString1::CString1(const CString1 &other)
{
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
CString1& CString1::operator=(const CString1 &other)
{
if (this == &other)
{
return *this;
}else
{
delete[] m_data;
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
}
main函数中的调用
int main(){
CString1 s;
CString1 s1(s);
CString1 s2("abcd");
s1 = s2;
return 0;
}