В решенията на задачи 4 и 5 от миналия път добавете дефиниция на оператор за присвояване (operator=
).
Защо е нужно в тези задачи да се напише т. нар. "Голяма четворка"?
Дефинирайте клас String
, който има за цел да имитира std::string
. Реализирайте:
- Голяма четворка:
- Конструктор по подразбиране
- Конструктор за копиране
- Оператор за присвояване
- Деструктор
- Конструктор с 1 параметър от тип
const char*
- Предефиниране на следните оператори:
[]
+
+=
==
!=
<
>
<=
>=
- Метод
length
- да връща дължината на низа (без да брои\0
) - Метод
push_back
- да добавя един символ към края на низа - Метод
empty
- да връща дали низът е празен - Метод
clear
- да изтрие съдържанието на низа - Метод
c_str
- да връща низа катоconst char*
(Имената на методите са извадени от документацията на std::string
)
Дефинирайте клас IntVector
, който има за цел да имитира std::vector<int>
(списък от цели числа). Реализирайте:
- Голяма четворка
- Предефиниране на следните оператори:
[]
+
+=
- Метод
length
- да връща броя на елементите на списъка - Метод
push_back
- да добавя един елемент към края на списъка - Метод
pop_back
- да премахва един елемент от края на списъка - Метод
find_first
- да връща индекса на първото срещане на даден елемент от началото на списъка (-1 при липса на такъв) - Метод
insert
- да добавя елемент към списъка на даден индекс (да връща дали е успешна операцията или не) - Метод
erase
- да премахва елемент от списъка на даден индекс (да връща дали е успешна операцията или не) - Метод
empty
- да връща дали списъкът е празен - Метод
clear
- да изтрие съдържанието на списъка
Използвайте клас Complex
от тук и предефинирайте операторите:
+
+=
-
(бинарен) (изваждане)-
(унарен) (отрицание)- Hint: сигнатурата е същата като за горния оператор, ама без параметъра
-=
*
(бинарен) (умножение)*=
==
!=