zoukankan      html  css  js  c++  java
  • 编写类String的构造函数、析构函数和赋值函数

    已知类String的原型为:
     class String
     {
       public:
      String(const char *str = NULL); // 普通构造函数
      String(const String &other);     // 拷贝构造函数
      ~ String(void);         // 析构函数
      String & operator =(const String &other); // 赋值函数
       private:
      char   *m_data;    // 用于保存字符串
     };
     请编写String的上述4个函数。

    // String的析构函数

    String::~String(void)

    {

       delete [] m_data;

      // 由于m_data是内部数据类型,也可以写成 delete m_data;

    }

    // String的普通构造函数 

    String::String(const char *str=NULL)

    {

       if(str==NULL)

       {

          m_data = new char[1];

         *m_data = '';

       }

     else

     {

       int length = strlen(str);

       m_data = new char[length+1];

       strcpy(m_data,str);

     }

    }

    // 拷贝构造函数

    String::String(const String &other)

    {

        int length = strlen(str);

       m_data = new char[length+1];

       strcpy(m_data,str);

    }

    // 赋值函数

    String& String::operater=(const String&other)

    {

       // (1) 检查自赋值 

        if(this==&other)

         return *this;

       // (2) 释放原有的内存资源  

        delete [] m_data;

       // (3)分配新的内存资源,并复制内容

        int length = strlen(other.m_data);

        m_data = new char[length+1];

       strcpy(m_data,other.m_data);

       return *this;

    }

  • 相关阅读:
    windows系统下的快捷指令
    Centos系统下搭建Smokeping 方法
    Niutrans 机器翻译系统的搭建
    国内常见语料库
    mysqldump 备份导出数据排除某张表或多张表
    删除mysql中user为空用户,mysql空密码
    nginx代理yum
    提高CPU使用率
    ubantu crontab e 无法编辑保存退出的问题
    Linux 使用NC命令永久监听本地端口
  • 原文地址:https://www.cnblogs.com/marshhu/p/3432107.html
Copyright © 2011-2022 走看看