C++ String类的实现

978 阅读1分钟

C++ class String 实现

class String
{
public:
	String(const char* str = NULL) // 普通构造函数
	{
		if (str == NULL)
		{
			m_data = NULL;
			m_len = 0;
			return;
		}
		m_len = Strlen(str);
		m_data = new char[m_len + 1];
		Strcpy(m_data, str);
	
	String(const String& other) // 拷贝构造函数
	{
		if (other.m_data == NULL)return;
		m_len = other.m_len;
		m_data = new char[m_len + 1];
		Strcpy(m_data, other.m_data);
	}
	~String(void) // 析构函数
	{
		m_len = 0;
		delete[] m_data;
		m_data = NULL;
	}
	String& operator=(const String& other) // 赋值函数
	{
		if (this != &other)
		{
			if (m_len != other.m_len)
			{
				delete[] m_data;
				m_len = other.m_len;
				m_data = new char[m_len + 1];
			}
			Strcpy(m_data, other.m_data);
		}
		return *this;
	}

	int Strlen(const char* StrDest)
	{
		int i;
		i = 0;
		while ((*StrDest++) != '\0')
		{
			i++;
		}
		return i;
	}

	char* Strcpy(char* strDest, const char* strSrc) {
		if ((NULL == strDest) || (NULL == strSrc))
			throw "Invalid argument(s)";
		char* strDestCopy = strDest;
		while ((*strDestCopy++ = *strSrc++) != '\0');
		return strDest;
	}

private:
	char* m_data;
	size_t m_len;
};