#include<iostream> using namespace std; class String { public: String(const char *str = NULL); //构造函数 String(const String &other); //拷贝构造函数 ~String(void); //析构函数 String& operator=(const String &other); //等号操作符重载 void ShowString(); private: char *m_data; //指针 }; String::~String() { delete[] m_data; //析构函数,释放地址空间 } String::String(const char *str) { if (str == NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0'; { m_data = new char[1]; *m_data = '\0'; } else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串; { int length = strlen(str); m_data = new char[length + 1]; strcpy(m_data, str); } } 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 << this->m_data << endl; } void main() { String AD; char * p = "ABCDE"; String B(p); AD.ShowString(); AD = B; AD.ShowString(); }
string构造函数 析构函数
猜你喜欢
转载自blog.csdn.net/qq_31339017/article/details/78118468
今日推荐
周排行