#include <iostream>
#include <cstring>
using namespace std; class CString {
private:
char* m_pdata;
public:
CString(const char* ptr = nullptr) {
if (ptr == nullptr) m_pdata = nullptr;
m_pdata = new char[strlen(ptr) + ];
strcpy(m_pdata, ptr);
}
CString(const CString& a) {
if (a.m_pdata == nullptr) this->m_pdata = nullptr;
this->m_pdata = new char[strlen(a.m_pdata) + ];
strcpy(this->m_pdata, a.m_pdata);
} CString(CString&& a){
this->m_pdata = a.m_pdata;
a.m_pdata = nullptr;
} ~CString() {
if (this->m_pdata){
delete[] this->m_pdata;
}
} CString& operator=(const CString& a) {
if (this == &a)
return *this; if (this->m_pdata)
delete[] this->m_pdata;
this->m_pdata = new char[strlen(a.m_pdata) + ];
strcpy(this->m_pdata, a.m_pdata);
return *this;
} CString operator+=(const CString& a) {
if (a.m_pdata == nullptr) {
return *this;
} else if (this->m_pdata == nullptr) {
return a;
} else {
char* tmp = this->m_pdata;
this->m_pdata = new char[strlen(this->m_pdata) + strlen(a.m_pdata)
+ ];
strcpy(this->m_pdata, tmp);
strcat(this->m_pdata, a.m_pdata);
delete[] tmp;
return *this;
}
} friend CString operator+(const CString& a, const CString& b) {
char* res = new char[strlen(a.m_pdata) + strlen(b.m_pdata) + ];
strcpy(res, a.m_pdata);
strcat(res, b.m_pdata);
CString cs(res);
delete[] res;
return cs;
} friend ostream& operator<<(ostream& os, const CString& a) {
os << a.m_pdata;
return os;
}
}; int main() { CString a("abc");
CString b(a);
a = b;
a += b;
CString c = a + b;
std::cout << c << std::endl;
std::cout << a << std::endl; return ;
}

面试:C++String类实现的更多相关文章

  1. C++面试中string类的一种正确写法

    C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...

  2. C++面试中string类的一种正确简明的写法

    本文首发于酷壳网 http://coolshell.cn/articles/10478.html 先说说程序员(应届生)面试的一般过程,一轮面试(面对一到两个面试官)一般是四.五十分钟,面试官会问两三 ...

  3. Java面试炼金系列 (1) | 关于String类的常见面试题剖析

    Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...

  4. String类为什么要用final修饰(面试回答)

    String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...

  5. C++ string类的实现

    c++中string类的实现 今天面试被考到了, 全给忘记了!!!   //string类的实现 #include <iostream> #include <string.h> ...

  6. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

  7. C#中 StringBuilder类 与 String类的区别---(转)

      在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...

  8. String 类 Copy-On-Write 技术以及使用时存在的风险

    先来看一下string 面试时的简易写法(使用的是深拷贝): class String { String() :str(]) { str[] = '\0'; } String(char* p, siz ...

  9. c++在string类源

    一:回想 (1)c++中的string类是在面试中和笔试中常常考的题目: project代码免费下载 string类的自行实现 (2)c++中的string类和fstream类合起来是处理外部数据的利 ...

  10. String类的indexOf方法的用法和举例

    2017年3月3号博主第一次去郑州互联网公司面试,背景是这样的我先前去了农大龙子湖校园招聘投简历,然后第二天去面试了那经历可以说是很失败的一次面试,当然这跟自己的水平有关了接下来重点讲一下面试的题目: ...

随机推荐

  1. POJ1742--Coins(动态规划)

    People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony ...

  2. kafka讲解

    转载http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Ka ...

  3. Tarjan求缩点化强连通图

    Describe: 求一个有向图加多少条边可以变成一个强连通图 Solution: Tarjan缩点染色后,判断出度和入度,所有点的出度 = 0 的和 和 入度 = 0 的和的最大值即为所求. 缩点染 ...

  4. logrotate 日志切割工具

    相关原理参见:https://www.cnblogs.com/sailrancho/p/4784763.html 一.相关目录: 程序:/usr/sbin/logrotate配置:/etc/logro ...

  5. 元组(tuple)基本操作

    1.定义元组,Python的元组和列表类似,不同之处在于元组中的元素不能修改(因此元组又称为只读列表),且元组使用小括号而列表使用中括号 dimensions.py , ) print(dimensi ...

  6. Android-Genymotion Unable to load VirtualBox engine

    点击Genymotion出现Genymotion Unable to load VirtualBox engine 解决方案: 打开官网,下载VirtualBox 点击安装: 然后再次点击打开Geny ...

  7. redhat安装docker

    一.禁用selinux 由于Selinux和LXC有冲突,所以需要禁用selinux.编辑/etc/selinux/config,设置两个关键变量.     SELINUX=disabled  SEL ...

  8. HTTP协议(一)基本概念、HTTP方法、HTTP状态码

    1.HTTP是什么? 它的全名叫:HyperText Transfer Protocol ,中国名字:超文本传输协议 : 它是可靠的数据传输协议,是Internet 的多媒体信使,即使数据相隔天涯海角 ...

  9. ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下

    先简单了解一这个几个 名词的意思. 控制反转(IOC) 依赖注入(DI) 并不是某种技术. 而是一种思想.一种面向对象编程法则 什么是控制反转(IOC)?  什么是依赖注入(DI) 可以点击下面链接 ...

  10. 【转】javascript深入理解js闭包

    原文:http://www.jb51.net/article/24101.htm 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作 ...