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

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

相关推荐
宇木灵9 分钟前
C语言基础学习-X0前置
c语言·开发语言·学习
-Rane15 分钟前
【C++】vector
开发语言·c++·算法
电饭叔20 分钟前
python转换字符串介绍
开发语言·windows·python
希望之晨23 分钟前
c++ 11 学习 override
开发语言·c++·学习
Mrliu__36 分钟前
Python高级技巧(六):正则表达式
开发语言·python·正则表达式
普通网友37 分钟前
PL/SQL语言的正则表达式
开发语言·后端·golang
(initial)44 分钟前
B-02. Shared Memory 深度优化:从 Bank Conflict 到 Tensor Core Swizzling
开发语言·c#
消失的旧时光-194344 分钟前
智能指针(四):体系篇 —— 现代 C++ 内存管理全景图
开发语言·c++
仰泳的熊猫1 小时前
题目1531:蓝桥杯算法提高VIP-数的划分
数据结构·c++·算法·蓝桥杯
汉克老师1 小时前
GESP2023年12月认证C++二级( 第一部分选择题(1-8))
c++·循环结构·分支结构·gesp二级·gesp2级