Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Stroka
- {
- private:
- int k;
- char *s;
- public:
- Stroka()
- {
- k = 1;
- s = new char[k + 1];
- s[0] = '\0';
- }
- Stroka(char *st)
- {
- k = 0;
- while (st[k] != '\0')
- {
- ++k;
- }
- ++k;
- s = new char[k + 1];
- for (int i = 0; i < k; i++)
- {
- s[i] = st[i];
- }
- s[k] = '\0';
- }
- Stroka(const Stroka &smt)
- {
- char *ko;
- k = smt.k;
- s = new char[k + 1];
- for (int i = 0; i < k; ++i)
- {
- s[i] = smt.s[i];
- }
- s[k] = '\0';
- }
- void input()
- {
- cout << s << endl;
- }
- ~ Stroka()
- {
- cout << "Destructor have worked!" << endl;
- system("pause");
- delete[] s;
- }
- operator const char*()
- {
- return(const char*)s;
- }
- Stroka& operator=(const Stroka& sm)
- {
- if (this == &sm)
- {
- return *this;
- }
- if (k != sm.k)
- {
- delete[] s;
- s = new char[sm.k + 1];
- for (int i = 0; i < sm.k; ++i)
- {
- s[i] = sm.s[i];
- }
- s[sm.k] = '\0';
- }
- else
- for (int i = 0; i < sm.k; ++i)
- {
- s[i] = sm.s[i];
- }
- k = sm.k;
- return *this;
- }
- Stroka& operator+=(const Stroka& mm)
- {
- int j, m, l = 0;
- char *t = new char[k + 1];
- for (int i = 0; i < k; ++i)
- {
- t[i] = s[i];
- }
- t[k] = '\0';
- delete[] s;
- m = k;
- k = k + mm.k - 1;
- s = new char[k+1];
- for (j = 0; j < m - 1; ++j)
- s[j] = t[j];
- for (int i = m - 1; i < k; ++i)
- {
- s[i] = mm.s[l];
- l++;
- }
- s[k] = '\0';
- delete[] t;
- return *this;
- }
- friend const Stroka operator+(const Stroka& left, const Stroka& right)
- {
- int l = 0;
- Stroka tmp("mm");
- delete[] tmp.s;
- tmp.k = left.k + right.k - 1;
- tmp.s = new char[tmp.k + 1];
- for (int i = 0; i < left.k - 1; ++i)
- tmp.s[i] = left.s[i];
- for (int i = left.k - 1; i < tmp.k; ++i)
- {
- tmp.s[i] = right.s[l];
- ++l;
- }
- tmp.s[tmp.k] = '\0';
- return tmp;
- }
- char &operator[](const int m)
- {
- cout << "For change" << endl;
- if ((m > -1) && (m < k)) return s[m];
- else
- {
- cout << "EROR" << endl;
- system("pause");
- exit(-1);
- }
- }
- char operator[](const int m) const
- {
- cout << "sasaa" << endl;
- if ((m > -1) && (m < k)) return s[m];
- else
- {
- cout << "EROR" << endl;
- system("pause");
- exit(-1);
- }
- }
- };
- void main()
- {
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement