Skip to content

Latest commit

 

History

History

week4

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Упражнение №4 - Оператори

Задача 1

В решенията на задачи 4 и 5 от миналия път добавете дефиниция на оператор за присвояване (operator=). Защо е нужно в тези задачи да се напише т. нар. "Голяма четворка"?

Задача 2

Дефинирайте клас String, който има за цел да имитира std::string. Реализирайте:

  • Голяма четворка:
    • Конструктор по подразбиране
    • Конструктор за копиране
    • Оператор за присвояване
    • Деструктор
  • Конструктор с 1 параметър от тип const char*
  • Предефиниране на следните оператори:
    • []
    • +
    • +=
    • ==
    • !=
    • <
    • >
    • <=
    • >=
  • Метод length - да връща дължината на низа (без да брои \0)
  • Метод push_back - да добавя един символ към края на низа
  • Метод empty - да връща дали низът е празен
  • Метод clear - да изтрие съдържанието на низа
  • Метод c_str - да връща низа като const char*

(Имената на методите са извадени от документацията на std::string)

Задача 3

Дефинирайте клас IntVector, който има за цел да имитира std::vector<int> (списък от цели числа). Реализирайте:

  • Голяма четворка
  • Предефиниране на следните оператори:
    • []
    • +
    • +=
  • Метод length - да връща броя на елементите на списъка
  • Метод push_back - да добавя един елемент към края на списъка
  • Метод pop_back - да премахва един елемент от края на списъка
  • Метод find_first - да връща индекса на първото срещане на даден елемент от началото на списъка (-1 при липса на такъв)
  • Метод insert - да добавя елемент към списъка на даден индекс (да връща дали е успешна операцията или не)
  • Метод erase - да премахва елемент от списъка на даден индекс (да връща дали е успешна операцията или не)
  • Метод empty - да връща дали списъкът е празен
  • Метод clear - да изтрие съдържанието на списъка

Задача 4 (за упражнение)

Използвайте клас Complex от тук и предефинирайте операторите:

  • +
  • +=
  • - (бинарен) (изваждане)
  • - (унарен) (отрицание)
    • Hint: сигнатурата е същата като за горния оператор, ама без параметъра
  • -=
  • * (бинарен) (умножение)
  • *=
  • ==
  • !=