作为c/c++程序员在笔试中经常被问到的想必就是 当场实现一个string类,可能由于时间关系可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。
string的实现涉及很多c/c++的基础知识,内存控制及异常处理等问题,一个不慎可能就被pass掉,好了不多说 let you look at my code!!
整体类的框架如下:
class mystring
{
friend std::istream &operator >>(std::istream &is,mystring &str); //输入
friend std::ostream &operator <<(std::ostream &os,mystring &str); //输出
public:
mystring(const char *str=null); //通用构造函数
mystring(const mystring &str); //通用拷贝构造函数
mystring(int n,char c); //有参构造函数
~mystring();
//自定义赋值
mystring &operator=(const mystring &str);
//拼接字符串
mystring operator +(const mystring &str);
mystring operator +(const char*str);
//追加字符串
mystring &operator +=(const mystring &str);
mystring &operator +=(const char *str);
//判断是否相等
bool operator ==(const mystring &str);
//获得字符串
int size();
private:
char *data; //数据
int datalen; //数据长度
};
实现如下
mystring::mystring(const char *str)
{
if(!str)
{
datalen=0;
data=new char[1];
*data='