zoukankan      html  css  js  c++  java
  • 一个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::String(
    const char *str) 
    {
     
    if(str==NULL) 
     {
      m_data 
    = new char[1]; // 得分点:对空字符串自动申请存放结束标志'/0'的空
      
    //加分点:对m_data加NULL 判断
      *m_data = '/0'
     } 
     
    else
     {
      
    int length = strlen(str); 
      m_data 
    = new char[length+1]; // 若能加 NULL 判断则更好 
      strcpy(m_data, str); 
     }
    }

    // String的析构函数

    String::
    ~String(void
    {
     delete [] m_data; 
    // 或delete m_data;
    }

    //拷贝构造函数

    String::String(
    const String &other)    // 得分点:输入参数为const型

     
    int length = strlen(other.m_data); 
     m_data 
    = new char[length+1];     //加分点:对m_data加NULL 判断
     strcpy(m_data, other.m_data); 
    }

    //赋值函数

    String 
    & String::operate =(const String &other) // 得分点:输入参数为const型

     
    if(this == &other)   //得分点:检查自赋值
      return *this
     delete [] m_data;     
    //得分点:释放原有的内存资源
     int length = strlen( other.m_data ); 
     m_data 
    = new char[length+1];  //加分点:对m_data加NULL 判断
     strcpy( m_data, other.m_data ); 
     
    return *this;         //得分点:返回本对象的引用

     

    剖析:

    能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上!
    在这个类中包括了指针类成员变量m_data,当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款。仔细学习这个类,特别注意加注释的得分点和加分点的意义,这样就具备了60%以上的C++基本功!

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/xiao-wei-wei/p/3356441.html
Copyright © 2011-2022 走看看