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; };很简单,没有什么要着重讲的,但是,我保证以后遇见不会再写错,强烈建议,看懂这个,再看看我的另一篇博客,见链接;
赐教!