面试:C++String类实现
#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类实现的更多相关文章
- C++面试中string类的一种正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...
- C++面试中string类的一种正确简明的写法
本文首发于酷壳网 http://coolshell.cn/articles/10478.html 先说说程序员(应届生)面试的一般过程,一轮面试(面对一到两个面试官)一般是四.五十分钟,面试官会问两三 ...
- Java面试炼金系列 (1) | 关于String类的常见面试题剖析
Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...
- String类为什么要用final修饰(面试回答)
String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...
- C++ string类的实现
c++中string类的实现 今天面试被考到了, 全给忘记了!!! //string类的实现 #include <iostream> #include <string.h> ...
- java中String类、StringBuilder类和StringBuffer类详解
本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...
- C#中 StringBuilder类 与 String类的区别---(转)
在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...
- String 类 Copy-On-Write 技术以及使用时存在的风险
先来看一下string 面试时的简易写法(使用的是深拷贝): class String { String() :str(]) { str[] = '\0'; } String(char* p, siz ...
- c++在string类源
一:回想 (1)c++中的string类是在面试中和笔试中常常考的题目: project代码免费下载 string类的自行实现 (2)c++中的string类和fstream类合起来是处理外部数据的利 ...
- String类的indexOf方法的用法和举例
2017年3月3号博主第一次去郑州互联网公司面试,背景是这样的我先前去了农大龙子湖校园招聘投简历,然后第二天去面试了那经历可以说是很失败的一次面试,当然这跟自己的水平有关了接下来重点讲一下面试的题目: ...
随机推荐
- H5总结
1.新增的语义化标签: <nav>: 导航 <header>: 页眉 <footer>: 页脚 <section>:区块 <article> ...
- 用jquery制作一个二级导航下拉菜单
1使用$(function(){...})获取到想要作用的HTML元素. 2通过使用children()方法寻找子元素. 3通过使用show()方法来显示HTML元素. 4通过 ...
- zoj2607
题意:如左图,给定A,B,C,D的面积分别为大于等于a,b,c,d,求最小的面积 思路:因为a,b肯定有一个是满的(不然还可压缩到更小),同理,ac,bd,cd都只有一个是满的,所以有可能是对角满的, ...
- 微擎开启redis memcache文档2
微擎开启redis memcache 2018年01月20日 14:39:54 luogan129 阅读数:2161更多 个人分类: 微信开发 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- 分形之树(Tree)
似乎每一个有关分形的教程都要讲到分形树,大概是因为树是生活中最常见的分形实物吧.这一节将展示下如何一步一步地生长出一棵树来.其实现算法不难,就是在每一次生长迭代中,使线段生长出几条新的线段来. 核心代 ...
- win10安装Ubuntu双系统
1.软碟通做启动盘,不要用easyBCD,比较麻烦 2.windows10中取消选择"启用快速启动(推荐)" 3.压缩出空白卷 4.重启时按F12 5.在bios中将boot pr ...
- 一次对路边饮用水RFID供应机的跑路玩法
"如何成为一个合格的硬件白帽子? 答案: 一个有聪明大脑的你 要有归纳类比和善于用GOOGLE的能力(百度?放弃吧) 善于翻阅和查询相关开发文档和强大的跑路能力." WARNING ...
- svn重新安装后报You need to upgrade the working copy first错误
问题来源 最近重新安装了操作系统,安装了一个最新版的svn,提交代码的时候报了一个错误:You need to upgrade the working copy first,!网上找了很多解决办法,都 ...
- 05-创建kubectl-kubeconfig文件
本文档介绍创建 kubeconfig 文件 下载 kubectl $ wget https://dl.k8s.io/v1.6.0/kubernetes-client-linux-amd64.tar.g ...
- 5_Python OOP
1. 实例属性和类属性 (1) 实例属性在构造函数__init__中定义,定义时以self作为前缀,只能通过实例名访问 (2) 类属性在类中方法之外单独定义,还可以在程序中 ...