最近在各种笔试和面试中反复被毒打,有些东西还是要自己去完整的去写,才能理解其底层的实现逻辑,才能安全有效的利用其结构。

#include <cstring>
#include <iostream>
using namespace std;
class String {public:// 默认构造函数String(const char* str = nullptr);// 拷贝构造函数String(const String& str);// 析构函数~String();// 字符串赋值函数String& operator=(const String& str);private:char* m_data;int m_size;
};// 构造函数String::String(const char* str) {if (str == nullptr)  // 加分点:对m_data加NULL 判断{m_data =new char[1];  // 得分点:对空字符串自动申请存放结束标志'\0'的m_data[0] = '\0';m_size = 0;} else {m_size = strlen(str);m_data = new char[m_size + 1];strcpy(m_data, str);}}// 拷贝构造函数String::String(const String& str) {  // 得分点:输入参数为const型m_size = str.m_size;m_data = new char[m_size + 1];  //加分点:对m_data加NULL 判断strcpy(m_data, str.m_data);}// 析构函数String::~String() { delete[] m_data; }// 字符串赋值函数String& String::operator=(const String& str) {  // 得分点:输入参数为constif (this == &str)  //得分点:检查自赋值return *this;delete[] m_data;  //得分点:释放原有的内存资源m_size = strlen(str.m_data);m_data = new char[m_size + 1];  //加分点:对m_data加NULL判断strcpy(m_data, str.m_data);return *this;  //得分点:返回本对象的引用}

C++自己实现一个String类(腾讯阿里面试题目)相关推荐

  1. 腾讯CSIG面试题目总结

    腾讯CSIG面试题目总结 1.MySQL高可用如何做?链接 主从同步:网络波动等一些客观原因,导致半同步复制发生超时而切换为异步复制,那么这时便不能保证数据的一致性.所以尽可能的保证半同步复制,便可提 ...

  2. Coding之路——重新学习C++(6):一个String类

    这个String类是对运算符重载和以前知识的一个综合应用,提供了值语义.字符串读写.检查和不检查的访问.流I/O和字符串拼接等功能. 1.String类的定义 class String{//类型的定义 ...

  3. 【JavaSE】String类详解含面试经典

    目录 一.初识String类 二.String类的常用方法 2.1 字符串的构造 2.2 String对象的比较 2.2.1 ==比较是否引用同一个对象 2.2.2 boolean equals(Ob ...

  4. C++学习之路(六):实现一个String类

    直接贴代码吧,这段时间准备面试也正好练习了一下. class String { public:String(const char *str = "");~String(void); ...

  5. 独立完成一个城市选择组件(阿里前端题目,内附知识点、思路)

    借用了两个久经考验的轮子:fastClick和better-scroll,介意可以就此打住.本文绝对原创,手打,思路清晰,知识不难,不适合大佬观看,谢谢. 首先说一下,我不是阿里的人,也没去阿里面试过 ...

  6. 一个Java程序员的阿里面试心得,附答案解析

    第一阶段:架构师筑基必备技能 我觉得,但凡是个成年人应该都清楚扎实的基本功对自己的工作帮助有多重要.从各大招聘网站的招聘要求来看,第一条都明确说明需要扎实的Java基础.因此,一般笔试以及面试的第一轮 ...

  7. 微信小程序开发之——婚礼邀请函-邀请函页面(4,腾讯android面试题目

    李四 新娘 我们诚邀您来参加我们的婚礼 事件:2020年12月30日 地点:北京市海淀区XX路XX酒店 3.2 样式文件(pages/index/index.wxss) /*播放器 */ .playe ...

  8. Learning C++ No.11【string类实现】

    引言: 北京时间:2023/2/19/8:48,昨天更新了有关进程状态的博客,然后在休息的时候,打开了腾讯视屏,然后看到了了一个电视剧,导致上头,从晚上6点看到了10点,把我宝贵的博客时间给搞没了,伤 ...

  9. C++11之右值引用(三):使用C++11编写string类以及“异常安全”的=运算符

    前面两节,说明了右值引用和它的作用.下面通过一个string类的编写,来说明右值引用的使用. 相对于C++98,主要是多了移动构造函数和移动赋值运算符. 先给出一个简要的声明: class Strin ...

最新文章

  1. SpringBoot监听redis过期key
  2. 初步了解Linux内核中断初始化
  3. linux用shell写正则表达式,Linux命令行与Shell脚本编程大全-shell正则表达式
  4. 安装vbb的一些经验(包括mysql,apache)
  5. ADXL345 三轴加速度角度传感器
  6. Zend Studio 13.6安装配置SVN注意
  7. Cocos2d-iphone学习笔记
  8. 游戏图片文件和声音文件的隐藏
  9. 项目实训—场景划分(一)
  10. 【Windows包管理器(choco)】choco : 无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正 确,然后再试一次。
  11. 怎样从Mysql官网下载mysql.tar.gz版本的安装包
  12. JFinal解决IE浏览器下载问题
  13. 11月最新编程排行榜出炉,这个语言超过了C蝉联榜首~
  14. FLV视频格式详解(转)
  15. Spring Aspect @PointCut(execution表达式)
  16. 数据结构考研:数据结构的三要素:逻辑结构,存储结构,数据计算的详细区分与讲解(软件工程/计算机/王道论坛)
  17. 计算机基础——数据结构篇概览
  18. 怎样合理确定压铸内浇口面积?| 压铸模拟案例
  19. React中Fragment标签和空标签的使用(vue中的template标签类似)
  20. Ubuntu和Win双系统连接罗技蓝牙键盘/鼠标时:在win下Keys下面没有对应linux设备的蓝牙地址

热门文章

  1. ssh放行端口_安全组中已经添加规则放行SSH端口的访问之后如何使用f1 RTL
  2. Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)
  3. Python的Wiki
  4. 转贴:Google提供网站恶意软件侦测服务
  5. $router和$route的区别
  6. mpu6050 重力加速度_2021年高考物理一轮复习学与练 重力、弹力 、摩擦力 高中物理知识总结大全...
  7. wordpress插件_8个虚拟教室的必备WordPress插件
  8. 使用Powershell自动化Linux,macOS和Windows进程
  9. java图片处理开源项目_如何处理离开开源项目
  10. ros开源课程_如何将开源纳入计算机科学课程