Opened 7 years ago

Closed 7 years ago

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

ДЗ#1. Матрицы.

Reported by: basharin.egor Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha1-deadline
Component: HA#1 matrices Version: 1.0
Keywords: Cc: eaniconer@…

Description

Прошу проверить домашнее задание 1.

Change History (7)

comment:1 Changed 7 years ago by Vladimir Rutsky

Milestone: ha1-milestone1ha1-milestone2
Type: ожидается проверкаожидаются исправления

Замечания:

  1. Здесь происходит "срез" класса исключения (см "Propagating a polymorphic exception" здесь):
     } catch (const std::exception& e) {
         //throw std::runtime_error("Error while reading file from file");
         throw e;
     }

Используйте просто throw;.

  1. На мой взгляд указание беззнаковости при инициализации переменной нулём излишне: nrow_ = 0u;. nrow_ = 0; не должно приводить ни к каким предупреждением.
  1. Зачем вы возвращаете константную матрицу в const Matrix operator+(const Matrix& rhs) const;? Данный метод вернёт временный неименованный объект (prvalue) и мне не понятно зачем добавлять ему константность.
  1. Код выделения памяти для буфера матрицы дублируется в Init() и operator>>.

comment:2 Changed 7 years ago by basharin.egor

""" 3. Зачем вы возвращаете константную матрицу в const Matrix operator+(const Matrix& rhs) const;? Данный метод вернёт временный неименованный объект (prvalue) и мне не понятно зачем добавлять ему константность. """
Добавляю константность для того, чтобы нельзя было сделать так:
(A + B) = C;

comment:3 Changed 7 years ago by Vladimir Rutsky

В (A + B) = C нет ничего страшного (по крайней мере не должно быть).
Конкретно (A + B) = C не особо осмысленно, но, например следующий код:

Matrix & m = A + B;
...
m += ...
m /= ...

для избежания лишнего копирования матрицы --- осмысленен*.

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

comment:4 Changed 7 years ago by Vladimir Rutsky

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

comment:5 Changed 7 years ago by Vladimir Rutsky

Milestone: ha1-milestone2ha1-deadline
Type: ожидается проверкаожидаются исправления

Замечания:

  1. В этой конструкции нет смысла:
     try
     {
         // ...
     } catch (...) {
         throw;
     }

Вы с тем же успехом можете просто не ловить исключение здесь.

comment:6 Changed 7 years ago by basharin.egor

Исправлено

comment:7 Changed 7 years ago by Vladimir Rutsky

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

Решение зачтено.

Note: See TracTickets for help on using tickets.