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

21 Авг 2019 в 07:07
169 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир