String是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。
String的实现涉及很多C++的基础知识、内存控制及异常处理等问题,仔细研究起来非常复杂,本文主要做一个简单介绍和讲解模拟实现String类的增删查改。
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <assert.h>
using namespace std;
class String
{
public:
String(char* str = "")
{
_size = strlen(str);
_capacity = _size;
_str = new char[strlen(str)+1];
strcpy(_str,str);
}
void Swap(String& s)
{
swap(_str,s._str);
swap(_size,s._size);
swap(_capacity,s._capacity);
}
String(const String& s)
:_str(NULL)
,_size(0)
,_capacity(0)
{
String tmp(s._str);
Swap(tmp);
}
String& operator=(String s)
{
Swap(s);
return *this;
}
~String()
{
if (_str)
{
delete[] _str;
}
}
char* Getstr()
{
return _str;
}
size_t Size()
{
return _size;
}
size_t Capacity()
{
return