В финализаторах
Нет, вы должны подражать ему. Либо с помощью функции очистки, либо путем инкапсуляции всех ваших ресурсов в классы RAII . Компилятор установит в вашем приложении статический механизм для вызова деструкторов в ваших классах RAII, т. Е. Когда они выходят из области видимости, ресурсы освобождаются через деструктор.
Об неизменяемости и инициализации
Как правило, если что-то является неизменным и const-correct , класс будет иметь все свои члены как const, и единственный раз, когда вы можете "записать" их, - это когда класс инициализирован. Однако в вашем случае это может оказаться невозможным.
Я предлагаю вам собрать все свои ресурсы и инициализировать класс (через конструктор не по умолчанию с константными членами), как только они у вас появятся. Другая альтернатива (которой я не придерживаюсь) - это иметь Функция-мутатор, которая «претендует» на правильность const, но записывает в значения const единовременную инициализацию после построения.