Change History (4)

comment:1 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Тесты прошли

Стиль

  1. Вместо '\n' лучше юзать std::endl
  2. switch-case или if-ы по типу объекта, чтобы выбрать нужную функцию -- это полиморфизм в стиле чистого си. В плюсах это делается через механизм виртуальных функций. Я на практике объяснял как это делается. Например, можно определить виртуальную функцию read у Employee, переопределить её в наследниках, и затем в операторе << вызвать её у Employee&. То же самое для вывода.
  3. Переопределять операторы ввода-вывода для наследников, а затем кастовать указатели, тоже не нужно. Виртуальные функции избавят тебя от этой необходимости.
  4. У тебя в конструкторах одинаковый код инициализирующий имя и зарплату. Лучше его вынести в базовый класс и инициализировать его в списке инициализации.

За корректность 7/10, но спроектировано это не так, как нужно, поэтому за стиль 0/3.

comment:2 Changed 3 years ago by antonenko.mixail

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Тесты -- это классно, только в мейкфайле делай цель all выше всех остальных, чтобы при запуске make без аргументов запускалась она, а не тесты.

  1. Почему-то тесты прошли, но в конце вывода написалось "Had error while reading". O_o
  2. Какой смысл делать операторы ввода/вывода френдами для наследников? Они ни к каким приватным полям не лезут.
  3. Постоянно выделяешь килобайтовый буфер под имя, даже если оно 2 символа. Можно поэкономнее обращаться с памятью, особенно когда вам разрешили пользоваться такой замечательной вещью как std::string
  4. Не надо так делать if (s.fail()) cout << "Failed to read. Are strings null-terminated?\n";. Оператор ввода ничего не должен лишнего выводить на экран. Это задача вызывающего кода отреагировать на невалидное состояние потока и упасть или сообщить об этом пользователю. И если решил выводить сообщения об ошибках, то лучше делать это в std::cerr

9/10

comment:4 Changed 3 years ago by Святослав Власов

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