Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115

Собщения вызовов деструктора

04.05.2015, 12:53. Показов 742. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А подскажите,можно ли решить как-нибудь такую проблему...По книге Дейтела дошел до деструкторов. В книге был пример по вызову конструкторов и деструкторов. Переписал код,запустил.Сначала подумал,что в коде где-то накосячил,ибо деструкторы не вызывались.Начал искать,но ничего не нашел,потом нажав клавишу,чтоб окно программы закрылось,увидел мельком что, что-то потом печатается.В итоге получается так,что деструкторы на самом деле вызываются (и вывод сообщения на экран все таки есть),НО я просто не вижу этого,ибо консоль сразу закрывается.Можно как-то задержать окно программы именно после return ?Чтоб я увидел ссобщения вызовов деструктора?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
void create(void); // прототип функции
 
CreateAndDestroy first(1,"(global before main)"); // глобальный
 
int main()
{
 cout << "\nMAIN FUNCTION: EXECUTION BEGINS" << endl;
 CreateAndDestroy second(2,"(local automatic in main)");
 static CreateAndDestroy third(3,"(local static in main)");
 
 create(); // вызвать функцию для создания объектов
 
 cout << "\nMAIN FUNCTION: EXECUTION RESUMES" << endl;
 CreateAndDestroy fourth(4,"(local automatic in main)");
 cout << "\nMAIN FUNCTION: EXECUTION ENDS" << endl;
 
 cout << endl;
 system("pause");
 return 0;
}
void create(void)
{
 cout << "\nCREATE FUNCTION: EXECUTION BEGINS" << endl;
 CreateAndDestroy fifth(5,"(local automatic in create)");
 static CreateAndDestroy sixth(6,"(local static in create)");
 CreateAndDestroy seventh(7,"(local automatic in create)");
 cout << "\nCREATE FUNCTION: EXECUTION ENDS" << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
CreateAndDestroy::CreateAndDestroy(int ID, string messageString)
{
 objectID=ID; // установить идентификационный номер объекта
 message=messageString; // установить описательное сообщение
 
 cout << "Object " << objectID << " constructor runs  " << message << endl;
}
 
// деструктор
CreateAndDestroy::~CreateAndDestroy()
{
 // для некторых объектов выводить \n; улучшает читаемость
 cout << (objectID==1||objectID==6 ? "\n" : "");
 cout << "Object " << objectID << " destructor runs  " << message << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
#ifndef Unit2H
#define Unit2H
 
class CreateAndDestroy
{
 public:
    CreateAndDestroy(int,string); // конструктор
    ~CreateAndDestroy(); // деструктор
 private:
    int objectID; // ID - значение объекта
    string message; // сообщение, описывающее объект
};
#endif
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2015, 12:53
Ответы с готовыми решениями:

Накопление вызовов деструктора в цикле
Считываю данные в цикле используя переменную создающую объект в стеке: #include &lt;iostream&gt; #include &lt;vector&gt; ...

Собщения
как узнать какие я шлю сообщения окну когда нажимаю на него мышкой или клавишой и не надо мне перечислять все виды сообщений мне нужно...

Великие программисты остовляйте собщения для общения! (Даже в рифму)
Давайте обсуждать могучий Visual C++ .NET

2
0 / 0 / 1
Регистрация: 29.04.2015
Сообщений: 24
04.05.2015, 14:23
Вот так попробуй


C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main()
{
        int b = 3;
        cout<<b;
        system("pause");
};
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
04.05.2015, 15:13
System16v, помести создание объектов и все действия с ними в локальную область (по-другому, в фигурные скобки {}), тогда, при выходе из этой области, будут вызваны деструкторы, и ты это увидишь, когда сработает system("pause").
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2015, 15:13
Помогаю со студенческими работами здесь

Почему чат "speaking24" долго выводит собщения?
http : //www.speaking24. c om/indexchat . php сайт ели как выводит сообщение на экран:( объясните почему? Если не сможете объяснить то...

использование деструктора
в .net, насколько помню, не рекомендуется использовать деструктор для освобождения неуправляемых ресурсов(в пыхе может быть curl_close...

Вызов деструктора
Доброго вам времени суток. Проблема в том, что деструктор не выводит сообщение без этой строки. s1.~Shave(); И я не уверен, что так...

Использование деструктора
Я не очень понимаю в каких случаях в классе или шаблоне надо реализовавывать дестрактор а в каких не не надо ??? вот например код : ...

Описание деструктора
Пример: #include&lt;iostream&gt; using namespace std; class A { int A; };


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru