String类的实现

来源:互联网 发布:vs开发unity3d 编辑:程序博客网 时间:2024/06/07 23:16
class String  {  private:      char *m_data;                 //私有成员,保存字符串  public:      String(const char *str = NULL);       //普通构造函数      String(const String &other);          //复制构造函数      ~String(void);                        //析构函数      String & operator =(const String &other);      //赋值函数  };    String::String(const char *str = NULL)    //带一个指针的普通构造函数  {      if(str == NULL)      {          m_data = new char[1];    //分配一个字节          assert(m_data != NULL);          *m_data = '\0';      }      else      {          m_data = new char[strlen(str)+1];    //分配空间容纳str内容          assert(m_data != NULL);          strcpy(m_data,str);      }  }    String::String(const String &other)     //拷贝构造函数  {      m_data = new char[strlen(other.m_data)+1];      assert(m_data != NULL);      strcpy(m_data,other.m_data);  }    String::~String(void)            //析构函数  {      if(m_data != NULL)      {          delete []m_data;          m_data = NULL;      }  }    String & String::operator=(const String &other)     //赋值函数  {      if(&other == this)            //如果对象与other是同一个对象          return *this;      delete []m_data;       //释放堆内存      m_data = new char[strlen(other.m_data)+1];      assert(m_data != NULL);      strcpy(m_data,other.m_data);      return *this;  }  

0 0
原创粉丝点击