您的位置:首页 > 编程语言 > C语言/C++

【C++】实现一个简洁版的class String

2015-07-10 10:28 477 查看
//实现一个简洁版的class String
#include <iostream>
#include <string.h>
using namespace std;
class String
{
public:
String()
{
_str = new char[1];
_str[0] = '\0';
}
String(const char *str)
{
_str = new char[strlen(str) + 1];
strcpy(_str, str);
}
String(const String &s)
{
_str = new char[strlen(s._str) + 1];
strcpy(_str, s._str);
}
String& operator=(const String &s)
{
/*if (this != &s)                           //普通方法有缺陷
{
delete[] _str;
_str = new char[strlen(s._str) + 1];
strcpy(_str, s._str);
}
return *this;
*/
if (&s != this)                                //异常安全的神赋值
{
String tmp(s._str);
swap(_str, tmp._str);
}
return *this;
}
~String()
{
if (_str)
delete[] _str;
}
void print()
{
cout << _str << endl;
}
private:
char * _str;
};
int main()
{
String s1;
String s2("abcdef");
String s3(s2);
String s4 = s3;
s1 = s2;
s1.print();
s2.print();
s3.print();
s4.print();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: