在面试过程中,如果要让写一个string类的模拟,那么,面试官多半是想考你关于深浅拷贝的某些知识。
对于string类的实现来说,比较重要的几个成员函数,也就是构造函数、析构函数、拷贝构造函数、赋值运算符重载等等,再次,我只先实现这几个。其中拷贝构造和赋值运算符的重载有其他方法,我将在后边附上写出来。
废话不多,直接上程序:
<pre name="code" class="cpp">class String
{
public:
char* _pstr;
public:
String(char* pstr="")//构造函数
{
if (pstr == NULL)
{
_pstr = new char[1];
*_pstr = '\0';
}
else
{
_pstr = new char[strlen(pstr) + 1];
strcpy(_pstr,pstr);
}
}
String(const String&s)//拷贝构造函数
{
_pstr = new char[strlen(s._pstr) + 1];
strcpy(_pstr, s._pstr);
}
~String()//析构函数
{
if (_pstr)
{
delete[] _pstr;
}
}
String& operator = (const String& s)//赋值运算符重载
{
if (this != &s)
{
char *pstr = new char[strlen(s._pstr) + 1];