#include "stdafx.h"
#include <iostream>
using namespace std;
class String
{
public:
String(const char* cstr = 0);
String(const String& str); //拷贝构造函数
String& operator=(const String& str); //拷贝赋值函数
~String(); //析构函数
char* get_c_str() const { return m_data; }
private:
char* m_data;
};
String::String(const char* cstr)
{
if (cstr)
{
m_data = new char[strlen(cstr) + 1];
strcpy(m_data, cstr);
}
else
{
m_data = new char[1];
*m_data = '\0';
}
}
String::~String()
{
delete[] m_data;
}
String::String(const String& str)
{
m_data = new char[strlen(str.m_data) + 1];
strcpy(m_data, str.m_data);
}
String& String::operator=(const String& str)
{
if (this == &str) //自我检测
return *this;
delete[] m_data; //先销毁原有的指针
m_data = new char[strlen(str.m_data) + 1]; //重新分配内存
strcpy(m_data, str.m_data); //拷贝
return *this;
}
以String类为例,复习了一个类的构造函数、拷贝构造函数、拷贝赋值函数和析构函数的实现过程。