Opened 3 years ago
Closed 3 years ago
#326 closed ожидается проверка (задача сдана)
HW#07
Reported by: | Daniil Lyubaev | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW Matrix | Version: | 3.0 |
Keywords: | Cc: |
Description
Вроде как все функции реализованы и даже работают.
Если пытаться делать матрице +=
через +
, то получается, что деструктор подчищает ту память (после выхода из operator+
), на которую мы кидаем указатель. Попытался это обойти в лабе, выглядит как костыль. Так же ощущение, что кода много и задача решается короче. Как всё это можно подправить?
Change History (6)
comment:1 Changed 3 years ago by
comment:2 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Реализовать +
через +=
-- это отличная идея! Ты молодец, что догадался. Дополнительного вызова деструктора не случится, потому что сработает NRVO, я вкратце про него упоминал на последнем занятии, на следующем расскажу еще раз.
- Не работает
+
и-
. Тест> init a 2 2 > set a 0 0 1 > set a 0 1 2 > + a a
выдает неверный результат
const
у методов не расставленыoperator==
имеет риск залезть не в свою память, подумай когда это может произойти и исправь- Хочется увидеть
assert
'ы в тех местах, где операция имеет риск упасть, например когда размеры матриц не соответствуют друг другу https://en.cppreference.com/w/cpp/error/assert
comment:3 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
- Умножение тоже не работало, видимо в процессе горы переписываний кривовато сделал, сейчас всё работает.
- Расставил.
- Сделал обработку на неравенство размеров.
- Сделал.
Насколько плохим решением будет сделать using namespace std::size_t
, чтоб не писать постоянно std::size_t
, а просто делать size_t
? Он там довольно много раз фигурирует ведь.
comment:4 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Теперь у тебя умножение перестало работать, а еще валгринд ругается на ошибкиk
init a 2 1 init b 1 2 set a 0 0 1 set a 1 0 2 set b 0 0 3 set b 0 1 4 * a b 3 6 6 0
- По прежнему не вижу константность у методов https://emkn.ru/attachments/classes/file_wVD3Q1zl/lect09.pdf слайд 13.
comment:5 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:6 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
У операторов +, -, *
не хватает const
, они ведь не меняют текущий объект.
В остальном всё ок, 9.5/10
Upd.: Сильно поправил код, выглядит получше.