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

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

相关推荐
watson_pillow18 分钟前
mfc按钮点击事件没有触发,且程序卡死
c++·mfc
_Kayo_36 分钟前
JS深拷贝 浅拷贝、CSS垂直水平居中
开发语言·前端·javascript
云天徽上42 分钟前
【数据可视化-87】2023-2024年中国各省人口变化深度分析与可视化:Python + pyecharts打造炫酷暗黑主题大屏
开发语言·python·信息可视化·数据可视化·pyecharts
404未精通的狗43 分钟前
(C++)继承全解析及运用
开发语言·c++
李永奉1 小时前
C语言—数组和指针练习题合集(二)
c语言·开发语言
xo198820111 小时前
鸿蒙Des 加密解密 C++版本
c++·华为·harmonyos
C4程序员1 小时前
北京JAVA基础面试30天打卡08
java·开发语言·面试
God-Hrh1 小时前
JVM运维
java·开发语言·jvm
weixin_448617052 小时前
疏老师-python训练营-Day43复习日
开发语言·python
MATLAB代码顾问2 小时前
MATLAB实现遗传算法求解路网路由问题
开发语言·算法·matlab