Step 12 (S-10189)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/549/step/12

До сих пор мы не уделяли внимание константности методов. Пусть теперь класс String выглядит следующим образом:


struct String {
    String(const char *str = "");            /* 1 */
    String(size_t n,  char c);               /* 2 */
    ~String();                               /* 3 */
    void append(const String &other);        /* 4 */
    size_t length();                         /* 5 */
    char &get(size_t pos);                   /* 6 */
    bool equal(const String &other);         /* 7 */
private:
    size_t size;
    char *str;
};

Из неизвестных вам методов в классе появились следующие:



  • length — возвращает длину строки,
  • get — предоставляет доступ к элементу строки по его индексу (обратите внимание на сигнатуру),
  • equal — сравнивает строку с аргументом метода на равенство.

Подумайте, какие из этих методов можно и стоит отметить как константные (имеется ввиду логическая константность). При выполнении этого задания учитывайте сигнатуры методов (реализации конструкторов, деструктора и метода append вам уже известны).