170 похожих чатов

А выделения ресурсов в конструкторе? В общем я не фанат

исключений в конструкторе, вы же как хотите

23 ответов

24 просмотра

Выделение ресурсов должно быть обёрнуто в соответствующие RAII классы

Ваше выделение ресурсов должно быть обернуто в RAII обертки

все успешно выделенные ресурсы будут освобождены

Не стоит этому остальных только учить

Ramil-Rizvanov Автор вопроса
Ramil Rizvanov
А если сам класс raii обертка?😊

Все его члены должны быть также RAII обертками над своими ресурсами, речь об этом

Ramil-Rizvanov Автор вопроса
Max Kolesnikov
Все его члены должны быть также RAII обертками над...

Все ваши раии обертки где-то останавливаются😊

Ramil Rizvanov
Все ваши раии обертки где-то останавливаются😊

"Вложенность владения" ресурсами как правило невелика, плюс ко всему для бОльшего числа случаев подойдут стандартные классы вроде unique_ptr с кастомным deleter'ом

Ramil Rizvanov
Все ваши раии обертки где-то останавливаются😊

Самая глубокая RAII обертка, которая занимается хранением ресурса, и не должна бросать исключений просто исходя из её функциональности

Boris Usievich
И что делать, если ресурса не дали?

Не понимаю проблему - будет null внутри

Ramil-Rizvanov Автор вопроса
Alexander Karaev
Самая глубокая RAII обертка, которая занимается хр...

Ну ок, допустим просто удалить поля бывает мало, может быть нужно подготовить объекты для удаления, за всем этим нужно следить. А вы как сами считаете, исключения в конструкторе норма? Практикуете?

Ramil Rizvanov
Ну ок, допустим просто удалить поля бывает мало, м...

Я считаю, что исключения в конструкторе можно использовать по назначению, но не пихаю их во все возможные места

Ramil Rizvanov
Ну ок, допустим просто удалить поля бывает мало, м...

Еще один момент, как вы напишете копирующий оператор присваивания, если у вас конструктор не бросает исключений? Как выделите копию ресурса и обработаете все связанные с этим ошибки? А если копируете "неинициализированный" объект? Вы серьезно возьметесь утверждать, что это лучше, чем copy-and-swap в три строки? Особенно, если класс владеет несколькими ресурсами сразу

Ramil Rizvanov
Ну ок, допустим просто удалить поля бывает мало, м...

"Подготовкой для удаления" занимается деструктор RAII обертки того объекта, который нужно "подготовить"

Ramil-Rizvanov Автор вопроса
Max Kolesnikov
Еще один момент, как вы напишете копирующий операт...

От bad alloc мы никак не уйдем, но мой посыл использовать исключения по минимуму

Ramil Rizvanov
От bad alloc мы никак не уйдем, но мой посыл испол...

На bad_alloc свет клином не сошелся и я бы сказал даже, что его-то как раз обрабатывать почти никогда нет смысла

Ramil Rizvanov
От bad alloc мы никак не уйдем, но мой посыл испол...

Правда ли что если вы словили bad alloс то уже всё)

Ramil-Rizvanov Автор вопроса
Max Kolesnikov
"Подготовкой для удаления" занимается деструктор R...

А если нужно распутать поля перед вызовом их деструкторов? Деструктор поля не может знать о том куда он вовлечён в полной мере

Наоборот, чаше всего только так и можно

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта