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); //等号操作符重载
     
              ShowString();
    
       private:
            char *m_data; //指针
    };
     
     
    String::~String()
    {
        delete [] m_data; //析构函数,释放地址空间
    }
    
    String::String(const char *str)
    {
        if (str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'';
         {
            m_data=new char[1];
            *m_data='';
         }
        else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
         {
            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 [length+1];
        strcpy(m_data,other.m_data);
    }
    String& String::operator =(const String &other) 
    {
        if (this==&other)//当地址相同时,直接返回;
            return *this; 
     
        delete [] m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;
     
        int length= strlen (other.m_data);
        m_data=new [length+1];
        strcpy(m_data,other.m_data);
     
        return *this; 
    }
     
    String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;
    {
     
          cout<<this->m_data<<endl;
     
    }
  • 相关阅读:
    java----设计模式--创建型模式(GOF23)
    java----作用域
    java和python对比----实例化的对象属性:
    java----关键字
    java----Java的栈,堆,代码,静态存储区的存储顺序和位置
    java----面对对象
    算法----取0~30不重复的10个整数
    算法----二分查找算法
    织梦 验证码不显示问题
    dedecms 后台修改系统设置,但是config.cache.inc.php文件不能写入
  • 原文地址:https://www.cnblogs.com/dangeal/p/7839595.html
Copyright © 2011-2022 走看看