實現string類
阿新 • • 發佈:2017-11-15
存在 pre div pan turn class con ret bsp
/* 實現string類 */ class String { public: String(const char *str=NULL); //構造函數 String(const String &other); //拷貝構造函數 ~String(void); //析構函數 String& operator=(const String &other); //等號操作符重載 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 [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 [length+1]; strcpy(m_data,other.m_data); return *this; } String::ShowString()//由於m_data是私有成員,對象只能通過public成員函數來訪問; { cout<<this->m_data<<endl; }
實現string類