【C++】實現一個簡潔版的class String
阿新 • • 發佈:2019-01-28
//實現一個簡潔版的class String #include <iostream> #include <string.h> using namespace std; class String { public: String() { _str = new char[1]; _str[0] = '\0'; } String(const char *str) { _str = new char[strlen(str) + 1]; strcpy(_str, str); } String(const String &s) { _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str); } String& operator=(const String &s) { /*if (this != &s) //普通方法有缺陷 { delete[] _str; _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str); } return *this; */ if (&s != this) //異常安全的神賦值 { String tmp(s._str); swap(_str, tmp._str); } return *this; } ~String() { if (_str) delete[] _str; } void print() { cout << _str << endl; } private: char * _str; }; int main() { String s1; String s2("abcdef"); String s3(s2); String s4 = s3; s1 = s2; s1.print(); s2.print(); s3.print(); s4.print(); return 0; }