Opened 3 years ago
Closed 3 years ago
#480 closed ожидается проверка (задача сдана)
WW #10 (Ushakov)
Reported by: | ushakov.vladislav | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW cpp_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Полностью отказаться от деструкторов почему-то не получилось. Если убираю деструктор у EmployeeArray
, появляется утечка. Если его оставляю, а другие убираю, компилятор начинает жаловаться, что не понимает, какой деструктор вызывать при
delete employees_[i];
. Возможно надо работников как-то по-другому в employees_
добавлять (либо я что-то не понял). Зато пустые деструкторы чудесно работают.
Остальное поправил.
comment:3 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Type: | ожидается проверка → ожидаются исправления |
Деструктор ~EmployeeArray
тебе необходим, потому что он владеет ресурсом -- массивом указателей на сотрудников. Сам массив указателей лежит в векторе, поэтому память под него будет очищена вектором автоматически, но вот память под объекты самих сотрудников очищена не будет, это нужно сделать вручную.
- Пустые деструкторы можно просто не писать, компилятор сгенерирует их автоматически.
- Когда происходит что-то не так при чтении в операторе
>>
не нужно падать по ассерту -- достаточно перевести поток в failed-state. И уже снаружи ты сможешь проверить состояние потока и упасть по ассерту если это необходимо.
9/10
comment:4 Changed 3 years ago by
Resolution: | задача сдана |
---|---|
Status: | closed → reopened |
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
Почему-то тикет в закрытых оказался.
Все исправил.
comment:5 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | reopened → closed |
Мне всё нравится, круто, молодец!
10/10
Корректность:
По стилю:
name_.clear();
в деструктореEmployee
бессмысленно. Деструктор классаstd::string
сам за собой почистит всю память. Вообще дляEmployee
деструктор не нужен, тот что по умолчанию прекрасно всё сделает.FILE*
. Но когда поля класса -- это примитивные типы не требующие освобождения или объекты которые сами за собой подчищают ресурсы, нужда в деструкторе отпадает.std::endl
лучше чем'\n'
Employee
.init_flag
выглядит избыточным. Можно же написатьEmployee* empl = nullptr; ... assert(empl);
В остальном всё очень хорошо, особенно для первой посылки. Пока что 6/10