当前位置: 首页 > news >正文

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

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

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

String() : _str(nullptr), _length(0) {}

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

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

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

String& operator=(String other) { // 注意这里是按值传递,会调用拷贝构造函数  swap(other); // 交换当前对象与临时对象的内容  return *this; // 返回当前对象的引用  
}// 交换成员函数  void swap(String& other) noexcept {std::swap(_str, other._str);std::swap(_length, other._length);}

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

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

 


http://www.mrgr.cn/news/15394.html

相关文章:

  • PHP语言有哪些优势和特点?
  • WPF UserControl 进行界面绑定,怎么进行内存释放
  • IT服务器安全规范 2024.08
  • 从面向对象(OOP)到面向切面(AOP):编程范式的演变
  • 深度学习100问21:RNN是如何实现的
  • 解析云上实时数仓的挑战与实践 | Databend @DTCC 2024 演讲回顾
  • (四)Kafka离线安装 - Kafka下载及安装
  • 人工智能-TensorFlow
  • 7z解压crc错误 7-Zip-常见问题解答
  • FLUX 1 将像 Stable Diffusion 一样完整支持ControlNet组件
  • 复现ssrf漏洞
  • rabbitmq发送的消息接收不到
  • 【论文阅读】YOLOv10: Real-Time End-to-End Object Detection
  • Windows Edge 兼容性问题修复
  • Spring Security与Apache Shiro:Java安全框架的比较
  • 如何为孤独症儿童选择最合适的康复机构?
  • SDI与CVBS信号处理:从编码到解码的深入探讨
  • 如何在知行之桥上通过业务单号查找原始报文?
  • 如何评估云服务器提供商可靠性与信誉度
  • 【Python 千题 —— 基础篇】身份证隐藏的信息