Advertisement
Derga

Untitled

May 21st, 2023
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. class MyString {
  2. private:
  3.   char *m_data;
  4.   int m_length;
  5.  
  6. public:
  7.   MyString(const char *data = nullptr, int length = 0) : m_length(length) {
  8.     if (length) {
  9.       m_data = new char[length];
  10.  
  11.       for (int i = 0; i < length; ++i)
  12.         m_data[i] = data[i];
  13.     }
  14.   }
  15.   ~MyString() { delete[] m_data; }
  16.  
  17.   // Перегруженное присваивание
  18.   MyString &operator=(const MyString &str) {
  19.     // если данные существуют в текущей строке, удалить их
  20.     if (m_data)
  21.       delete[] m_data;
  22.  
  23.     m_length = str.m_length;
  24.  
  25.     // копируем данные из str в неявный объект
  26.     m_data = new char[str.m_length];
  27.  
  28.     for (int i = 0; i < str.m_length; ++i)
  29.       m_data[i] = str.m_data[i];
  30.  
  31.     // возвращаем существующий объект, чтобы
  32.     // можно было включить этот оператор в цепочку
  33.     return *this;
  34.   }
  35.  
  36.   friend std::ostream &operator<<(std::ostream &out, const MyString &s);
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement