本文共 1298 字,大约阅读时间需要 4 分钟。
代码如下:
#include参考文献:#include using std::cout;using std::endl;class String{ public: String(const char *src = NULL);//构造函数 String(const String &other);//拷贝构造函数 ~String(void);//析构函数 String & operator =(const String &other);//赋值函数 void ShowString(); private: char *m_data;};//String 的构造函数String::String(const char *src){ if(src == NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0'; { m_data = new char[1]; *m_data = '\0'; } else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串; { int length = strlen(src); m_data = new char[length+1]; strcpy(m_data,src); }}//析构函数String::~String(){ delete [] m_data;//析构函数释放地址空间}//拷贝构造函数 ,功能与构造函数类似String::String(const String &other){ int length = strlen(other.m_data); m_data = new char[length + 1]; strcpy(m_data,other.m_data);}//赋值函数String& String::operator = (const String &other){ if(this == &other)return *this;//当地址相同时,直接返回 delete [] m_data;//当地址不同时,删除原来申请的空间,重新开始构造 int length = strlen(other.m_data); m_data = new char[length + 1]; strcpy(m_data,other.m_data); return *this;}void String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问{ cout< m_data<
[1] http://blog.csdn.net/xiaobo620/article/details/7396552