打印本文 打印本文  关闭窗口 关闭窗口  
C++基础(实现String类(C++版))
作者:佚名  文章来源:不详  点击数  更新时间:2008/10/22 21:34:03  文章录入:杜斌  责任编辑:杜斌

  问题描述: 已知String 类定义如下:
  class String
  {
  public:
  String(const char *str = NULL); // 考试大:通用构造函数
  String(const String &another); // 拷贝构造函数
  ~ String(); // 析构函数
  String & operater =(const String &rhs); // 赋值函数
  private:
  char *m_data; // 用于保存字符串
  };
  问题提出: 实现String 类成员函数?
  问题分析:
  问题解答:
  class String
  {
  public:
  String(const char *str = NULL); // 通用构造函数
  String(const String &other); // 拷贝构造函数
  ~String(); // 析构函数
  String & operater =(const String &rhs); // 赋值函数
  private:
  char *m_data; // 用于保存字符串
  };
  String::String(const char *str)
  {
  if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
  {
  m_data = new char[1] ;
  m_data[0] = ’\0’ ;
  }
  else
  {
  m_data = new char[strlen(str) + 1];
  strcpy(m_data, str);
  }
  }
  String::String(const String &other)
  {
  m_data = new char[strlen(other.m_data) + 1];
  strcpy(m_data, other.m_data);
  }
  String& String::operator =(const String &rhs)
  {
  if ( this == &rhs) //检查自赋值
  return *this ;
  delete []m_data; //删除原来的数据,新开一块内存
  m_data = new char[strlen(rhs.m_data) + 1];
  strcpy(m_data,rhs.m_data);
  return *this ;
  }
  String::~String()
  {
  delete []m_data ;
  } 考试大(www.Examda。com)
打印本文 打印本文  关闭窗口 关闭窗口