Opened 4 years ago

Closed 4 years ago

#649 closed ожидается проверка (задача сдана)

WW #11

Reported by: Tarabonda German Owned by: Дмитрий Свиридкин
Component: WW cpp_io Version: 3.0
Keywords: Cc:

Description


Change History (5)

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

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

Has Bonus -> Has bonus
Sold Items -> Sold items
Item Price -> Item price

С чтением из бинарного байла что-то не так. Если имя длиннее 8 символов, все сломается.
В коде реаллокации массива ошибка. Одна и та же в двух местах. Кстати, зачем выделять память дважды?

В операторы вывода объекты следует передавать по константной ссылке.

У вас заведены константы (лучше завести enum) для разных типов, а в switch вы используете магические числа.

            case 1: {
                Developer *dev = new Developer;
                istr >> *dev;
                array.add(dev);
            }
            break;
            case 2: {
                SalesManager *sm = new SalesManager;
                istr >> *sm;
                array.add(sm);
            }

в case блоке можно оставить только определения конкретного типа, а остальное вынести. Подумайте, почему.

Реализацию тривиальных конструкторов и деструкторов лучше переложить на компилятор (= default).
Еще стоит вспомнить, что у тривиальных типов нет конструкторов --- у вас можно создать объект, не читать его из потока, он останется в неконсистентом состоянии и упадет в деструкторе по corrupted free

В read_c_str ссылка на указатель не нужна.

Вспомагательные методы read/print, вероятно, должны быть protected

Для некоторых классов надо запретить копирование.

5/10

comment:2 Changed 4 years ago by Tarabonda German

Owner: changed from Tarabonda German to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

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

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

Base salary -> Base Salary

Конструкторы копирования и операторы присваивания принимают константные ссылки.

Если попытаться напечатать созданный конструктором по умолчанию объект-наследник Employee, то, в зависимости от состояния памяти, все может упасть, зациклиться или просто напечатать мусор.

8/10

comment:4 Changed 4 years ago by Tarabonda German

Owner: changed from Tarabonda German to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

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

Resolution: задача сдана
Status: assignedclosed

Проблему с мусором при конструировании объекта не решили -- нужно занулить память, выделенную под name_; А еще лучше в принципе не выделять память в конструкторе по умолчанию.


9/10

Note: See TracTickets for help on using tickets.