Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3778
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-29 19:07
文章分类

全部博文(4)

文章存档

2013年(4)

我的朋友

分类: C/C++

2013-04-10 00:51:50

已知类String的原型为:
  class String
  {
    public:
     String(const char *str =NULL); //普通构造函数
     String(const String&s); //拷贝构造函数
     ~String(); //析构函数
     String & operator =(const String &s); //赋值函数
    private:
     char *m_data; //用于保存字符串
  };
编写如下:
//普通构造函数
String::String(const char *str)
{
  if(str==NULL)
  {
    m_data = new char[1];  //对空字符串自动申请存放结束标志'\0'的空
    //对m_data加NULL 判断
    *m_data = '\0';
  }
  else
  {
    int length = strlen(str);
    m_data = new char[length+1];  //若能加 NULL 判断则更好
    strcpy(m_data, str);
  }
}

//String的析构函数
String::~String(void)
{
  delete [] m_data;  //或delete m_data;
}

//拷贝构造函数
String::String(const String &other)  //输入参数为const型
{
  int length = strlen(other.m_data);
  m_data = new char[length+1];  //对m_data加NULL 判断
  strcpy(m_data, other.m_data);
}

//赋值函数
String & String::operate =(const String &other)  //输入参数为const型
{
  if(this == &other)  //检查自赋值
    return *this;   
  delete [] m_data;  //释放原有的内存资源
  int length = strlen( other.m_data );
  m_data = new char[length+1];  //对m_data加NULL 判断
  strcpy( m_data, other.m_data );
  return *this;  //返回本对象的引用
}
阅读(184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~