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

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

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

23 ответов

7 просмотров

Выделение ресурсов должно быть обёрнуто в соответствующие 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...

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

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта