string类的简洁版实现

说是原创,差不多算是转载了,我也是看了好多大牛的写法,大牛的建议,自己加一总结,形成代码:

实现一个简洁版的string类,我觉得,下面的也够了:另外需要参见另外的写法:

http://blog.csdn.net/li_ning_/article/details/51282704

#pragma once

class String
{
public:
//1.无参构造
String()
:_str(new char[1])
{
*_str = '\0';
} //2.有参构造
String(char *str)
:_str(new char[strlen(str) + 1])
{
strcpy(_str,str);
} //3.拷贝构造
String(const String& str)
:_str(new char[str.size() + 1]) //size返回str对象的_str大小
{
strcpy(_str,str.c_str()); //c_str() 返回str对象的_str;
} //4.析构
~String()
{
delete[] _str;
} //5.赋值运算符的重载
String& operator=(const String& str)
{
String temp(str);
swap1(str);
return *this;
} //其余可写可不写 //辅助函数
size_t size() const
{
return strlen(_str);
} const char* c_str() const
{
return _str;
} void swap1(const String& str) const
{
std::swap(_str,str._str);
}
private:
char *_str;
};

很简单,没有什么要着重讲的,但是,我保证以后遇见不会再写错,强烈建议,看懂这个,再看看我的另一篇博客,见链接;

赐教!

上一篇:C#进阶系列 ---- 《CLR via C#》


下一篇:Silverlight——施工计划日报表(一)