Напише клас String със следната структура: class String { private: char* data; size_t size; public: String(); //Част от Г4 String(const String&); //Част от Г4 String& operator=(const String&); //Част от Г4 String(size_t size); //Задава начален размер на низа String(const char* data); //Задава начална стойност на низа ~String(); //Част от Г4 [подходящ тип] getSize() const; //Връща размера на низа [подходящ тип] concat(const String&); //Конкатенира два низа (низ1 = "а", низ2 = "b", низ1.concat(низ2) = "ab") [подходящ тип] split(const char* delimiter); //Разделя низа по подаден символ или низ [подходящ тип] reverse(); //Обръща елементите на низа [подходящ тип] clear(); //Изчиства елементите на низа [подходящ тип] empty(); //Проверява дали низа е празен [подходящ тип] operator[](int index); //Връща символ от низа [подходящ тип] operator+=(const String&); //Добавя към един низ друг [подходящ тип] operator+(const String&); //Събира два низа и връща нов низ [подходящ тип] append(const String&); //Добавя към един низ друг [подходящ тип] pushBack(char); //Добавя символ в края на низа [подходящ тип] popBack(); //Премахва символ от края на низа [подходящ тип] find(const char*); //Търси и връща първия индекс, на който се среща подадения низ или символ. Ако не съществува такъв индекс връща -1; [подходящ тип] compare(const String&); //Сравнява два низа лексикографски [подходящ тип] swap(const String&); //Разменя стойностите на два низа [подходящ тип] print(); //Извежда на стандартния изход низ }; Имате право да си добавяте помощни методи, ако имате нужда от тях. Нямате право да използвате библиотеки, различни от . Нямате право да използвате глобални променливи и функции. Бонус: Направете тестове и проверете дали класът ви работи правилно.