2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
|
||||||
1 | ||||||
Ошибка после перегрузки оператора +05.08.2017, 17:13. Показов 3279. Ответов 25
Метки нет (Все метки)
Здравствуйте, решил для себя попробовать перегрузить оператор + в классе. Вроде все хорошо работает и результат
при складывании нескольких экземпляров класса выдает правильный результат, но вместе с результатом появляется какая-то ошибка связанная, вроде, с памятью в куче. Вот моя программка: Кликните здесь для просмотра всего текста
Ошибка в прикреплении. В чем я ошибся?
0
|
05.08.2017, 17:13 | |
Ответы с готовыми решениями:
25
Ошибка перегрузки оператора Ошибка из книги оператора перегрузки Ошибка при реализации перегрузки оператора << Ошибка в алгоритме перегрузки оператора присваивания |
Заблокирован
|
|
05.08.2017, 23:31 | 21 |
noexcept обещает не генерировать исключений в теле функции. А конструкция аргументов происходит до вызова функции. Так что тут всё в порядке.
0
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
||||||
06.08.2017, 00:16 | 22 | |||||
Тут дело не в
noexcept , а в том что мы соврали пользователям, которые захотят написать безопасный код:
0
|
Заблокирован
|
|
06.08.2017, 00:30 | 23 |
notAll, а при чём тут
std::is_nothrow_move_assignable , если в функциях происходит не move, а copy и не assignment, а construction?
0
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
||||||
06.08.2017, 00:59 | 24 | |||||
Не имеет значения; ну пускай будет присваивание. И перемещать пользователю возможно сразу и не надо:
0
|
Заблокирован
|
||||||
06.08.2017, 01:14 | 25 | |||||
notAll, я не совсем понимаю, с чем ты хочешь поспорить.
Конструкция аргументов — это дело вызывающей стороны и noexcept у вызываемой функции никак не мешает ловить исключения, возникающие при конструкции аргументов. Можно наконец самому проверить, что исключения в copy constructor-е при вызове оператора присваивания с noexcept прекрасно отлавливаются и не приводят к вызову std::terminate. Если лень проверять — можно погуглить https://stackoverflow.com/ques... swap-idiom Добавлено через 10 минут И ещё:
String& operator =(String rhs) noexcept как copy assignment оператор, то ему не гарантируется отсутствие исключений.Так в чём же обман? Никакой разницы между String& operator =(String rhs) noexcept и версией с двумя операторами присваивания нет.
1
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
|
06.08.2017, 01:46 | 26 |
Да, так оно и есть, я был не прав.
1
|
06.08.2017, 01:46 | |
06.08.2017, 01:46 | |
Помогаю со студенческими работами здесь
26
Использование перегрузки оператора + Целесообразность перегрузки оператора Friend-функции перегрузки оператора Вопрос по поводу перегрузки оператора + Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |