1 #include<iostream>
2 #include<string>
3 #include<vector>
4 #include<algorithm>
5 #include<cstdio>
6 #include<complex>
7 #include<new>
8 #include<memory>
9 #include<exception>
10 using namespace std;
11 // interfaces should supported
12 //用char*管理内存
13 class String
14 {
15 public:
16 String();
17 String(const char*s);
18 String(size_t n, const char c);//用字符c填充String
19 String(const String&s);
20 String& operator=(const String&rhs);
21 String& operator=(const char*c);
22 char& operator[](size_t index);//要提供[]的两个版本
23 const char& operator[](size_t index)const;
24 String & operator*();//解引用重载是多余的,语言本身支持对所有类型的指针解引用,包括了自定义类型
25 String& operator+(const String&rhs);
26 String& operator+=(const String&rhs);
27 bool operator==(const String&rhs);
28 friend bool operator<(const String&lhs, const String&rhs);
29 friend ostream& operator<<(ostream& os, const String&rhs);
30 friend istream& operator>>(istream& in, String&rhs);
31 size_t size(); //如果是size_t length()会导致。。。。。
32 bool empty();
33 const char* c_str();
34 ~String();
35 private:
36 char * data;
37 size_t length;
38
39 };
40 String::String() //类外面定义menber function ,域作用符
41 {
42 this->data = new char[1](); //空字符串 ,strlen对data运算得到的长度为0
43 data[0] = '