• String的构造函数、析构函数和赋值函数


    编写类String的构造函数、析构函数和赋值函数

    已知类String的原型为:

    class String

    {

          public:

            String(const char *str = NULL); // 普通构造函数

            String(const String &other);        // 拷贝构造函数

            ~ String(void);                     // 析构函数

            String & operate =(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)

    {

        if(str==NULL)                          

        {

           m_data = new char[1];    // 若能加 NULL 判断则更好

           *m_data = ;                      

        }                                          

        else

        {

           int length = strlen(str);           

           m_data = new char[length+1];  // 若能加 NULL 判断则更好      

           strcpy(m_data, str);                

        }

    }   

    // 拷贝构造函数

    String::String(const String &other)

    {   

        int length = strlen(other.m_data);

        m_data = new char[length+1];      // 若能加 NULL 判断则更好    

        strcpy(m_data, other.m_data);         

    }

    // 赋值函数

    String & String::operate =(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];         // 若能加 NULL 判断则更好

           strcpy(m_data, other.m_data);

          // 4)返回本对象的引用

           return *this;

  • 相关阅读:
    kafka 重启consumer 重复消费问题
    预约系统(十) 预约页面--首页
    预约系统(九) 管理页面--部门管理
    预约系统(八) 管理页面--会议室管理
    预约系统(七) 管理页面--用户管理页面
    预约系统(六) 管理页面首页
    预约系统(五) 管理页面框架 密码修改和用户信息功能
    重读C# -- 1.net体系结构
    预约系统(四) 管理页面框架搭建easyUI
    预约系统(三) 登录功能和验证码
  • 原文地址:https://www.cnblogs.com/codec/p/3788345.html
Copyright © 2020-2023  润新知