Как вызвать деструктор только при выходе из main? Здравствуйте, возникла ситуация следующего рода : у меня очно много вложенностей функций, включая те , которые создают обкты, мне надо, чтобы деструктор не срабатывл после того как выйдет после первых {}, а в самом конце . Есть для подобного решение?

21 Авг 2019 в 07:07
146 +1
0
Ответы
1

Да, вы можете использовать статический объект класса, который будет вызывать деструктор в момент завершения программы. Например, вы можете создать статический объект класса внутри функции main, который будет создавать все остальные объекты, и деструктор этого статического объекта будет вызван только при завершении программы. Вот пример:

#include <iostream>
class MyObject {
public:
MyObject() {
std::cout << "Constructor\n";
}
~MyObject() {
std::cout << "Destructor\n";
}
};
class DestructorCaller {
public:
DestructorCaller() {}
~DestructorCaller() {
std::cout << "Destructors will be called now\n";
}
};
void someFunction() {
MyObject obj;
}
int main() {
DestructorCaller destructorCaller;
someFunction();
// Деструктор объекта destructorCaller будет вызван здесь, после выхода из main
return 0;
}

В данном примере при запуске программы будет выведено "Constructor", затем "Destructor" (деструктор объекта obj) и в конце "Destructors will be called now" (деструктор объекта destructorCaller). Таким образом, вы можете управлять вызовом деструкторов в нужный момент.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир