1. 程式人生 > >實現string類

實現string類

存在 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類