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

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

相关推荐
liulilittle8 分钟前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
我不是8神10 分钟前
Qt 知识点全面总结
开发语言·qt
Ralph_Y18 分钟前
多重继承与虚继承
开发语言·c++
今晚务必早点睡30 分钟前
写一个Python接口:发送支付成功短信
开发语言·python
bkspiderx30 分钟前
C++虚析构函数:多态场景下的资源安全保障
c++·析构函数·虚函数表·虚析构函数
jghhh0138 分钟前
基于C#实现与三菱FX系列PLC串口通信
开发语言·算法·c#·信息与通信
ada7_41 分钟前
LeetCode(python)22.括号生成
开发语言·数据结构·python·算法·leetcode·职场和发展
喵了meme1 小时前
C语言实战练习
c语言·开发语言
imkaifan1 小时前
bind函数--修改this指向,返回一个函数
开发语言·前端·javascript·bind函数
love530love1 小时前
EPGF 新手教程 12在 PyCharm(中文版 GUI)中创建 Poetry 项目环境,并把 Poetry 做成“项目自包含”(工具本地化为必做环节)
开发语言·ide·人工智能·windows·python·pycharm·epgf