实现string类

Posted dangeal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现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申请一个空间存放‘\0‘;
     {
        m_data=new char[1];
        *m_data=\0;
     }
    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;
 
}

 

以上是关于实现string类的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

从片段类中的对话框添加项目到recyclerview。

片段中 ListView 的 setOnItemClickListener

片段中ListView的setOnItemClickListener

java 代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段