Re: RAII и исключения в конструкторе
От: PlushBeaver  
Дата: 04.07.20 10:53
Оценка: +4
Здравствуйте, C0x, Вы писали:

C0x>Но как вам решение проблемы деструкции данных класса через базовый класс? Т.е. пихаем все ресурсные поля класса в базовый класс, который умеет их зачищать в деструкторе. После того как в нашем классе в конструкторе вылетает исключение, в любом случае вызовится деструктор базового класса и он освободит ресурсы. Есть такой подход в Си++ мире или лучше так не делать?


Сложно --- наследование и шаблоны на ровном месте, ненадежно --- можно забыть освободить ресурс или освободить не в том порядке. Пусть каждый ресурс будет отдельным объектом с RAII в составе A. При вылете исключения из конструктора A для тех из них, которые успели сконструироваться, будут вызваны деструкторы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.