Мне было интересно, действительно ли деструкторы класса по умолчанию делают что-либо при их вызове.Do Destructors Do Anything?
Я исследовал его, и я обнаружил, что если я создам класс с функцией, которая вызывает свой собственный деструктор, он ничего не делает (т.е. все переменные остаются нетронутыми, и экземпляр все еще существует и может использоваться).
Означает ли это, что деструктор класса можно рассматривать как унаследованную виртуальную функцию, которую могут иметь все классы и ее переопределение (удалить указатели и т. Д. И очистить переменные-члены), но если это не переопределено, он ничего не сделает?
Если это так, то деструктор не может быть использован как функция «очистить все данные» и сделать некоторые части кода более эффективными, очистив динамически распределенную память и повторно используя ее, а не получая компьютер найти новый блок памяти в куче?
Спасибо.
Если вызов деструктора для ручного освобождения памяти, что произойдет, если объект будет уничтожен? Я не уверен, на что вы нацелены, но, вероятно, лучше подходит для простой функции-члена. – Bingo
Ответ на этот вопрос может помочь: http: //stackoverflow.com/questions/1036019/does-calling-a-destructor-explicitly-destroy-an-object-completely –
Рассмотрите возможность использования пулов памяти или размещения new/delete, а не такой вид оптимизации. И помните: «преждевременная оптимизация - это корень всего зла». – doc