String类在c++中也是非常重要的
接下来实现一下String的一些基本的函数:
首先是构造函数:
String(char* str = "")//构造函数
:_str(new char[strlen(str) + 1])
{
strcpy(_str, str);
_str[strlen(str)] = '\0';
}
然后是拷贝构造函数:
(1)传统写法:
String(const String& s)//拷贝构造函数
:_str(new char[strlen(s._str)+1])
{
strcpy(_str, s._str);
_str[strlen(s._str)] = '\0';
}
(2)现代写法:
String(String& s)
{
String tmp(s._str);
swap(_str, s._str);
}
赋值运算符重载:
(1) 传统写法:
String& operator=(const String& s)
{
if (this != &s)
{
size_t len = strlen(s._str);
char* tmp = new char[len + 1];
memcpy(tmp, s._str, len + 1);
delete[] _str;
_str = tmp;
}
}
(2)现代写法:
String& operator=(String s)
{
swap(s._str, _str);
return *this;
}
析构函数:
~String()
{
delete[] _str;
}