Что означает, что сохранение ресурса является инвариантом класса в RAII?
На странице Википедии RAII говорится:
В RAII хранение ресурса является инвариантом класса и привязано к времени жизни объекта: выделение (получение) ресурсов выполняется во время создания объекта (в частности, инициализации) конструктором, а освобождение ресурса (освобождение) выполняется во время уничтожения объекта (в частности, финализация) деструктором.
На примере D language
мы можем легко понять, что означает Class Invariant
:
class Date {
int day;
int hour;
invariant() {
assert(1 <= day && day <= 31);
assert(0 <= hour && hour < 24);
}
}
Это ограничение, относящееся к тому, что может удерживать поле класса, чтобы считаться допустимым состоянием. Однако что это значит для удержания ресурса? Означает ли это, что ресурс принадлежит мне и будет добываться с момента его создания конструктором до его уничтожения де деструтором?