Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115805
  • 博文数量: 22
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-08 20:21
文章分类
文章存档

2011年(9)

2009年(1)

2008年(12)

我的朋友

分类: C/C++

2011-02-28 14:20:48

已知类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;  //返回本对象的引用
}
阅读(1637) | 评论(1) | 转发(2) |
0

上一篇:用函数的递归调用求7!

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2011-03-06 17:43:32

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com