#include<iostream>
#include<stdlib.h>
#include<assert.h>
using namespace std;
class String
{
public:
String(const char* str)
:_str(new char[strlen(str) + 1])
{
strcpy(_str, str);
_size = strlen(_str);
_capacity = _size + 1;
}
String(const String& s)
: _str(NULL) //若不赋空则为随机值,随机值_str析构函数释放指针会崩溃
{
String tmp(s._str); //重新开辟空间
swap(_str, tmp._str);
}
~String()
{
if (_str)
{
delete[] _str;
_size = 0;
_capacity = 0;
_str = NULL;
}
}
//PushBack
void PushBack(char ch)
{
checkcapacity();
this->_str[_size] = ch;
_size++;
this->_str[_size] = '\0';
}
//popback
/*void PopBack()
{
assert(_size > 0);
--_size;
_str[_size] = '\0';
}*/
char* C_str()
{
return _str;
}
private:
char* _str;
int _size;
int _capacity;
};
//PushBack测试函数
void Test()
{
char* s1 = "hello";
String s(s1);
s.PushBack(' ');
s.PushBack('w');
s.PushBack('o');
s.PushBack('r');
s.PushBack('l');
s.PushBack('d');
cout << s.C_str() << endl;
}
//PopBack测试函数
/*void Test()
{
String s("hello");
s.PopBack();
s.PopBack();
s.PopBack();
s.PopBack();
cout << s.C_str() << endl;
}*/
int main()
{
Test();
system("pause");
return 0;
}
转载于:https://blog.51cto.com/10740184/1739118