Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба2 / Laba 2 (18)
.cpp#include <iostream>
#include <windows.h>
using namespace std;
class ResourceHolder {
private:
int* data;
public:
ResourceHolder(int value) {
data = new int(value);
cout << "Выделена память для значения: " << value << endl;
}
// Деструктор
~ResourceHolder() {
delete data;
cout << "Память освобождена" << endl;
}
int getValue() { return *data; }
};
// Ситуации вызова деструктора:
// 1. Выход объекта из области видимости
void testFunction() {
ResourceHolder rh(100);
cout << "Внутри функции, значение: " << rh.getValue() << endl;
} // деструктор вызывается здесь
// 2. Явный вызов delete
void testDynamic() {
ResourceHolder* prh = new ResourceHolder(200);
cout << "Динамический объект, значение: " << prh->getValue() << endl;
delete prh; // деструктор вызывается здесь
}
int main() {
SetConsoleOutputCP(65001);
cout << "=== Задание 2.18 - Деструктор ===" << endl;
cout << "\nСитуация 1: Выход из области видимости" << endl;
testFunction();
cout << "\nСитуация 2: Явный вызов delete" << endl;
testDynamic();
cout << "\nСитуация 3: Локальный объект в блоке" << endl;
{
ResourceHolder local(300);
cout << "Внутри блока, значение: " << local.getValue() << endl;
} // деструктор вызывается здесь
cout << "\nСитуация 4: Временные объекты" << endl;
ResourceHolder temp(400);
cout << "Основная функция, значение: " << temp.getValue() << endl;
cout << "\nДеструктор будет вызван автоматически при завершении программы" << endl;
return 0;
}
Соседние файлы в папке Лаба2
