源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

一个string类的简单实现案例

  • 时间:2022-02-12 11:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:一个string类的简单实现案例
string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作
class String
{
 public:
  String()
  {
   data = new char[1];  //这里为什么使用new char[1]呢,虽然是一个字符,这是为了和析构函数保持对称,因为在别的构造函数中使用的char[]
   data[0]='\0';
   length = 0;
  }
  String(const char* str)
  {
   length = strlen(str);
   data = new char[length+1];
   strcpy(data,str);
   data[length]='\0';
  }
  String(const char* str,int n)
  {
   length = n;
   data = new char[n+1];
   strncpy(data,str,n);
   data[length] ='\0';
  }
  String(const String& src) //拷贝构造函数 也就是复制构造函数
  {
   length = src.length;
   data = new char[length+1];
   strcpy(data,src.data);
  }
  String& operator=(const String& src) //赋值构造函数
  {
   if(this == &src)
    return *this;
   delete [] data;
   data = new char[src.length+1];
   strcpy(data,src.data);
   return *this;
  }
  String& operator=(const char* src) //另一种的赋值构造函数
  {
   delete [] data;
   length = strlen(src);
   data = new char[length+1];
   strcpy(data,src);
   return *this;
  }
  char& operator[](int n)
  {
   return data[n];
  }
  const char& operator[](int n) const  //对于const成员函数 最好就是返回const的引用,这样是为了避免返回值被修改
  {
   return data[n];
  }
 friend ostream& operator<<(ostream& os,const String& st); 
   
  ~String()
  {
   delete [] data; 
  }
 private:
  char* data;
  int length; 
};
ostream& operator<<(ostream& os,const String& st)
{
   os<<st.data;
  return os;
}
以上这篇一个string类的简单实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部