????String??C++?е????????????????C++?????о?????????????String?????????????????????????????????????????????????????????????????????????????????????????
????String??????漰???C++???????????????????????????????о???????????????????????????????????ɡ?
????? ??????
??????????????????????????????????????String????????????????????????????????????????????????????????????????????????String???漰?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????л??????????????????????????????Щ?????????????????????????????????????????????
???????????????????????????????????Щ??????????
????????????????????????????????????????????????String????????????????????
??????????????????????????????????C????????????
???????????????????????????????????????????????????????????????????????
???????????????????????
class String
{
public:
String(const char *str = NULL); //??ù?????
String(const String &str);  //??????????
~String();      //????????
String operator+(const String &str) const; //????+
String& operator=(const String &str);  //????=
String& operator+=(const String &str);  //????+=
bool operator==(const String &str) const; //????==
char& operator[](int n) const;    //????[]
size_t size() const;  //???????
const char* c_str() const; //???C?????
friend istream& operator>>(istream &is?? String &str);//????
friend ostream& operator<<(ostream &os?? String &str);//???
private:
char *data;  //?????
size_t length; //????
};
?????????????????У????Щ?????const???ε???????????????????????????κ??????Щ??????????????????const???Σ?????ú??????????????????????
?????? ???????
??????????????г????????????
????????????????????????????????String??????????????????????????????????????в?????????????????????????????????????????
????????????C????strlen????????????????????????????????????strlen????????????
String::String(const char *str)//??ù?????
{
if (!str)
{
length = 0;
data = new char[1];
*data = '