• 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;

  • 相关阅读:
    导出redis中某个大key中的值并与数据库中作对比
    添加印记脚本
    校园信息流读请求脚本
    每天一个linux命令(1):which命令(转)
    (转)Jmeter内存溢出处理方式记录
    提升效率(时间准确性),减少时间和资源的消耗——由89C52/89C51的定时器中断引出的一些问题
    STM32重映射(PinRemap)的使用,注意!
    Terminal中输入命令直接打开QtCreator,以及创建其桌面快捷方式
    MarkDown插入图片
    初试MarkDown
  • 原文地址:https://www.cnblogs.com/codec/p/3788345.html
Copyright © 2020-2023  润新知