Почему RAII так назван? [закрыто]

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

Другими словами, это больше оde-acquisition а такжеde-initialisationТак почему же эта идиома называется так, как она есть?

Ответы на вопрос(1)

Решение Вопроса

я должен отметить, что это широко считается плохо названной идиомой. Многие люди предпочитают SBRM, что означает управление ресурсами стека. Хотя я (неохотно) согласен с использованием «RAII» просто потому, что он широко известен и используется, я думаю, что SBRM дает гораздо лучшее описание реального намерения.

Во-вторых, когда RAII был новым, он относился как к приобретению, так и к освобождению ресурсов. В частности, в то время было довольно распространенным видеть инициализацию в два этапа. Сначала вы определяете объект и только потом динамически выделяете любые ресурсы, связанные с этим объектом. Многие руководства по стилю поддерживали это, в основном потому, что в то время (до того, как в C ++ была обработка исключений) не было хорошего способа справиться с ошибкой в конструкторе. Поэтому, как часто говорят в руководствах по стилю, конструкторы должны выполнять только минимальный объем работы и, в частности, избегать всего, что может стать причиной сбоя, особенно при распределении ресурсов (и некоторые до сих пор говорят подобные вещи).

Довольно много из тех, которые уже обработаныreleasing ресурсы в деструкторе, так что это не было бы столь же четким отличием от предыдущей практики.

Ваш ответ на вопрос