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;

    }

  • 相关阅读:
    JustOj 1936: 小明A+B
    Codeforce 835B
    Codeforce 835A
    Java读取Properties工具类
    IDEA2019 断点调试
    Pagination+AngularJS实现前端的分页
    PageHelper实现分页
    100多个免费API接口分享 调用完全不限次数,以后总用得着
    HDU 5763 Another Meaning KMP+DP
    Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum 离线+线段树
  • 原文地址:https://www.cnblogs.com/marshhu/p/3432107.html
Copyright © 2011-2022 走看看