
#include <cstdlib>#include <iostream>#include <string>#include <algorithm>using namespace std;class MyString : public string{public: MyString() : string() {} MyString(const MyString &ms) : string(ms) {} MyString(const char *s) : string(s) {} MyString(const string &s) : string(s) {} MyString operator()(int start, int len) { return substr(start, len); }};int main(){ MyString s1("abcd-"), s2, s3("efgh-"), s4(s1); MyString SArray[4] = {"big", "me", "about", "take"}; cout << "1. " << s1 << s2 << s3 << s4 << endl; s4 = s3; s3 = s1 + s3; cout << "2. " << s1 << endl; cout << "3. " << s2 << endl; cout << "4. " << s3 << endl; cout << "5. " << s4 << endl; cout << "6. " << s1[2] << endl; s2 = s1; s1 = "ijkl-"; s1[2] = 'A'; cout << "7. " << s2 << endl; cout << "8. " << s1 << endl; s1 += "mnop"; cout << "9. " << s1 << endl; s4 = "qrst-" + s2; cout << "10. " << s4 << endl; s1 = s2 + s4 + " uvw " + "xyz"; cout << "11. " << s1 << endl; sort(SArray, SArray + 4); for (int i = 0; i < 4; i++) cout << SArray[i] << endl; //s1的从下标0开始长度为4的子串 cout << s1(0, 4) << endl; //s1的从下标5开始长度为10的子串 cout << s1(5, 10) << endl; return 0;}
- 调用父类构造函数的写法
- 不需要自己实现更多的运算符重载以及析构函数之类的,因为继承了父类所有的成员函数和成员变量,当调用这些重载过的运算符的时候,就直接使用父类继承下来的函数和变量。