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函数也可以改为全局函数再进行友元声明

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

相关推荐
Want59516 小时前
C/C++圣诞树②
c语言·c++·算法
胡耀超16 小时前
5、Python-NumPy科学计算基础
开发语言·人工智能·python·深度学习·numpy
点灯小铭16 小时前
基于MATLAB的车牌识别系统
开发语言·单片机·数码相机·matlab·毕业设计·课程设计
天天代码码天天16 小时前
基于海康SDK的C++实时视频流逐帧抓取存图小工具
c++·海康sdk·逐帧抓图
十八旬16 小时前
苍穹外卖项目实战(day7-2)-购物车操作功能完善-记录实战教程、问题的解决方法以及完整代码
java·开发语言·windows·spring boot·mysql
BIGSHU092317 小时前
java多线程场景3-并发处理和异步请求
java·开发语言·python
_OP_CHEN17 小时前
数据结构(C语言篇):(十一)二叉树概念介绍
c语言·开发语言·数据结构·二叉树·学习笔记··
柯南二号17 小时前
【设计模式】【观察者模式】实例
java·开发语言·servlet
沐怡旸17 小时前
【底层机制】稀疏文件--是什么、为什么、好在哪、实现机制
c++·面试
索迪迈科技17 小时前
Java-Spring入门指南(四)深入IOC本质与依赖注入(DI)实战
java·开发语言·spring