模拟实现string类

#include 
#include 
#include 
#include 
using namespace std;

class  String
{
public:
    String()
        :_arr(new char[1]{'\0'})
        ,_size(0)
        ,_capacity(0)//不计入'\0'的空间
    {}

    String(const char* arr)
        :_arr(new char[strlen(arr)+1])
        ,_size(strlen(arr))
        ,_capacity(strlen(arr))
    {
        strcpy(_arr,arr);
    }

    ~String()
    {
        delete[] _arr;
        _arr=nullptr;
        _size=0;
        _capacity=0;
    }

    const char operator[](int i) const
    {
        assert(i<_size);
        return _arr[i];
    }
    friend ostream& operator<<(ostream& out, const String& str) ;
protected:
    char* _arr;
    int _size;
    int _capacity;
};

ostream& operator<<(ostream& out, const String& str) 
{
    out << str._arr;
    return out;
}

int main()
{
    String s1("hello");
    cout<

你可能感兴趣的:(c++)