• String拷贝,构造和析构函数.


    class String
    {
    public:
     String(const char *str = NULL);             // 普通构造函数
     String(const String &other);                // 拷贝构造函数
     String & operator =(const String &other);    // 赋值函数
     ~ String(void);                             // 析构函数
    private:
     char      *m_data;                          // 用于保存字符串
    };


    // String的普通构造函数            
    String::String(const char *str)

    {
     if(str==NULL)
     {
      m_data = new char[1];
      *m_data = '\0';                     
     }                                         
     else
     {
      int length = strlen(str);
      m_data = new char[length+1];
      strcpy(m_data, str);
     }
    }  

    // 拷贝构造函数
    String::String(const String &other) 
    {  
     int length = strlen(other.m_data);   
     m_data = new char[length+1];
     strcpy(m_data, other.m_data);        
    }

    // 赋值函数
    String & String::operator =(const String &other)
    {  

     if(this == &other)                  // (1) 检查自赋值                  
      return *this;
     delete [] m_data;                   // (2) 释放原有的内存资源        
     
     int length = strlen(other.m_data);  // (3)分配新的内存资源,并复制内容
     m_data = new char[length+1];        // 若能加 NULL 判断则更好
     strcpy(m_data, other.m_data);       // (4)返回本对象的引用  
     return *this;
    }  

    // String的析构函数
    String::~String(void)         
    {
     delete [] m_data;                   // 由于m_data是内部数据类型,也可以写成 delete m_data;          
    }

  • 相关阅读:
    201671010112 第十四周 Swing用户界面组件
    201671010112 第十二周
    201671010112 第十二周—— “如何在eclipse中重定向标准输入到文件?”整理方案
    201671010112 第十一周
    201671010112 第十周
    201671010112 第九周
    201671010112 第八周
    201671010112 第六周
    面向对象的程序设计课程进度
    201671010111 2016-2017-2《面向对象的程序设计》 java学习总结
  • 原文地址:https://www.cnblogs.com/yuzhould/p/4454990.html
Copyright © 2020-2023  润新知