c++ string类的简单模拟实现

我们简单实现一下string的逻辑所以成员变量就只实现str指针和大小length就可以了。

默认构造我们选择通过初始化列表实现

cpp 复制代码
String() : _str(nullptr), _length(0) {}

字符串传值构造我们要进行深拷贝

cpp 复制代码
String(const String& other) {
    _length = other._length;
    if (_length > 0) {
        _str = new char[_length + 1];
        std::strcpy(_str, other._str);
    }
    else {
        _str = nullptr;
    }
}

赋值=的operator我们可以使用传统方法和拷贝构造一样也可以使用拷贝交换实现

cpp 复制代码
String& operator=(String other) { // 注意这里是按值传递,会调用拷贝构造函数  
    swap(other); // 交换当前对象与临时对象的内容  
    return *this; // 返回当前对象的引用  
}

  // 交换成员函数  
  void swap(String& other) noexcept {
      std::swap(_str, other._str);
      std::swap(_length, other._length);
  }

这里的swap函数也可以改为全局函数再进行友元声明

析构函数就释放空间再改一下值就可以了

相关推荐
aramae2 小时前
详细分析平衡树--红黑树(万字长文/图文详解)
开发语言·数据结构·c++·笔记·算法
一百天成为python专家2 小时前
python爬虫入门(小白五分钟从入门到精通)
开发语言·爬虫·python·opencv·yolo·计算机视觉·正则表达式
再卷也是菜2 小时前
C++篇(13)计算器实现
c++·算法
Mr YiRan3 小时前
多线程性能优化基础
android·java·开发语言·性能优化
熊猫钓鱼>_>3 小时前
Java String 性能优化与内存管理:现代开发实战指南
java·开发语言·性能优化
练习时长一年3 小时前
Spring容器的refresh()方法
java·开发语言
Arlene3 小时前
JVM Java虚拟机
java·开发语言·jvm
千码君20163 小时前
Go语言:关于导包的两个重要说明
开发语言·后端·golang·package·导包
88号技师3 小时前
2025年8月SCI-汉尼拔·巴卡优化算法Hannibal Barca optimizer-附Matlab免费代码
开发语言·人工智能·算法·数学建模·matlab·优化算法
_w_z_j_3 小时前
C++----变量存储空间
开发语言·c++