История изменений
Исправление
nanoolinux,
(текущая версия)
:
Делать обычный указатель на смарт-пойнтер - мягко говоря потерять все его преимущества.
Ну я то же самое имел ввиду.
А в том, что случится с выделенной памятью в конструкторе при появлении исключения.
С какой имено памятью, уточни? Та, что для полей класса? Или ты инициализируешь какой-то указатель (член класса) оператором new?
В первом случае - ничего, её удалят.
Во втором - всё зависит от того, привязываешь ли ты выделенную память к unique_ptr например. Если криворукий - то нет, получишь течь. Если сделать по нормальному - то да, т.к. все автоматические объекти (и тот же проинициированый твоей памятью unique_ptr) будут удалены.
Короче, я надеюсь ты в курсе, что такое exception safety в констукторе или нет? Если да - не парь мне мозг, если нет - иди читай книжки по спп.
Исходная версия
nanoolinux,
:
Делать обычный указатель на смарт-пойнтер - мягко говоря потерять все его преимущества.
Ну я то же самое имел ввиду.
А в том, что случится с выделенной памятью в конструкторе при появлении исключения.
С какой имено памятью, уточни? Та, что для полей класса? Или ты инициализируешь какой-то указатель (член класса) оператором new?
В первом случае - ничего, её удалят.
Во втором - всё зависит от того, привязываешь ли ты выделенную память к unique_ptr например. Если криворукий - то нет, получишь течь. Если сделать по нормальному - то нет, т.к. все автоматические объекти (и тот же проинициированый твоей памятью unique_ptr) будут удалены.
Короче, я надеюсь ты в курсе, что такое exception safety в констукторе или нет? Если да - не парь мне мозг, если нет - иди читай книжки по спп.