Opened 4 years ago

Closed 4 years ago

#666 closed ожидаются исправления (задача сдана)

WW #11

Reported by: zhemchuzhina.elizaveta Owned by: zhemchuzhina.elizaveta
Component: WW cpp_io Version: 1.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Вроде работает.

Зачем нужны отдельные перегрузки операторов ввода/вывода для каждого типа, если у вас есть виртуальный метод output? К нему, кстати, в пару стоило сделать еще и input.
Реализовывать стоит оператор через виртуальны метод, а не метод, через оператор.

Переопределения методов в наследниках стоит помечать override.

SalesManager &operator=(SalesManager &other) { return other; }; -- Вместо таких странных решения используйте = delete. Потому что этим странным оператором вы можете случайно воспользоваться, а удаленным -- точно нет.

explicit read_c_str(char **a, int size_x) -- этому манипулятору нет надобности менять указатель. Буффер должен быть предвыделен пользователем. Потому-то размер и передается.

Манипуляторы в операторы ввода/вывода стоит передавать по константной ссылке. Не очень понятно, почему они реализованы в employees.cpp

tmp[workers] = (Employee *) empl; не отбрасывайте const.

Перевыделение памяти после каждого добавления элемента -- это, конечно, работает, но не очень хорошо

У вас есть enum с типами, а в одном из операторов -- магические константы.

out.write((char *) &x, sizeof(char)); x -- нулевой символ? Его можно сделать статической костантой в этой функции. И const не надо отбрасывать.

Магические константы для типов протекли в main. Код, читающий и определяющий тип, повторяется дважды. Его можно завернуть в отдельную функцию.


6/10

comment:2 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to zhemchuzhina.elizaveta
Type: ожидается проверкаожидаются исправления

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.