C++中的string的自我实现(常用接口)注释详细

本文档详细介绍了如何在C++中自我实现一个string类,包括关键函数的实现方法和详细注释。
摘要由CSDN通过智能技术生成

string类自我实现

函数的实现方式以及必要解释都在下述代码中注释

class String
{
   
public:
  String()//无参构造
  //初始化
  :_str(new char[16]),//对_str开空间
  _size(0),//初始有效字符为0个
  _capacity(0)//树池容量为0
  {
   
    _str[_size] = '\0';//给初始有效字符处置'\0
  }
  String(const char* str)//带参构造
  {
   
    _size = strlen(str);//算出str的长度,即为_str的有效字符
    _str = new char[_size + 1];//为_str开新空间
    strcpy(_str,str);//拷贝
    _capacity = _size;//当前容量置为当前有效字符
  }
    ~String()//析构函数
    {
   
      if(_str)//如果_str不为空
      {
   
        delete[] _str;//释放_str空间
        _size = _capacity = 0;//当前游侠字符以及容量为0
        _str = nullptr;//_str置为nullptr
      }
    }
    //带参构造,与上述带参构造一样
    String(const String& str)
    :_str(new char[str._capacity + 1]),
    _size(str._size),
    _capacity(str._capacity)
    {
   
      strcpy(_str,str._str);
    }
    //=运算符重载
    String& operator=(const String& str)
    {
   
      if(this != &str)//排除自己等号赋值
      {
   
        char* tmp = new char[str._capacity + 1];//临时对象tmp开空间
        strcpy(tmp,str._str);//拷贝复制
        delete[] _str;//释放当前_str
        _str = tmp;//将临时对象赋给_str
        _size = str._size;//_str的有效字符
        _capacity = str._capacity;//_str的容量
      }
      return *<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值