class String
{
public:
String(const char *str = NULL);
String(const String &other);
~String(void);
String &operator=(const String &other);
private:
char *m_data;
};
String::String(const char *str = NULL)
{
if (str = NULL)
{
m_data = new char;
*m_data = '\0';
}
else
{
int len = strlen(str) + 1;
m_data = new char[len];
strcpy(m_data,str);
m_data[len] = '\0';
}
}
String::String(const String &other)
{
int len = strlen(other.m_data) + 1;
m_data = new char[len];
strcpy(m_data, other.m_data);
m_data[len] = '\0';
}
String::~String(void)
{
delete[]m_data;
m_data = NULL;
}
String& String::operator=(const String &other)
{
if (this == &other)
{
return *this;
}
else
{
int len = strlen(other.m_data) + 1;
m_data = new char[len];
strcpy(m_data, other.m_data);
m_data[len] = '\0';
return *this;
}
}
我们在进行开发的时候需要注意,尽量做到函数内部与外部的功能分离,不要做过多耦合。如在函数内部对外部传进来的指针进行释放,或者执行了类的析构函数,而外部不清楚函数内部执行了释放操作,再进行一次释放操作,就会导致内存泄露等问题。所以在编写代码时要考虑这一点。