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;

    }

  • 相关阅读:
    HDOJ_ACM_统计问题
    HDOJ_ACM_Queuing
    HDOJ_ACM_数塔
    HDOJ_ACM_免费馅饼
    HDOJ_ACM_FatMouse's Speed
    HDOJ_ACM_Monkey and Banana
    斐波南希数列
    .net framework 2.0的WinForm的ShowInTaskBar属性的bug
    寂寞的季节
    广告一下
  • 原文地址:https://www.cnblogs.com/marshhu/p/3432107.html
Copyright © 2011-2022 走看看