Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 727
#1

Деструктор класса - C++

06.12.2013, 09:14. Просмотров 366. Ответов 8
Метки нет (Все метки)

Имеется собственный класс, возник вопрос, деструктор класса вызывается не явно ? если так, то в какой момент он вызывается ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 09:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деструктор класса (C++):

деструктор класса - C++
Здравствуйте! Я скопировал код отсюда https://msdn.microsoft.com/ru-ru/library/6t4fe76c.aspx себе в Visual Studio 2015, после...

Деструктор класса список - C++
Доброго времени суток. Создал класс односвязный список. Не знаю как сделать деструктор таким, чтобы он удалял все элементы списка. В том...

Деструктор абстрактного класса - C++
Почему деструктор абстрактного класса нужно делать виртуальным?

Не срабатывает деструктор и дочернего класса - C++
Собственно, такие дела. Использую наследование, несколько цепочек одного от другого 1->2->3->.... И сегодня неожиданно обнаружил, что у...

Конструкторы и деструктор класса BigInteger - C++
Задание выглядит так. Определить класс BigInteger в файле BigInteger.h, который может быть использован для хранения больших...

Когда вызывается деструктор класса? - C++
Вопрос собственно в том, когда происходит освобождение памяти, занимаемой объектом класса? Допустим имеем #include <iostream> struct...

8
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
06.12.2013, 09:18 #2
Цитата Сообщение от NEvOl Посмотреть сообщение
деструктор класса вызывается не явно ?
Когда он не вызывается явно.
Цитата Сообщение от NEvOl Посмотреть сообщение
в какой момент он вызывается ?
Когда он больше не используется. Например, когда выходит из области видимости.
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
06.12.2013, 09:25 #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Когда он больше не используется.
Деструктор?
перечитай свою фразу в контексте с вопросом
правильней сказать деструктор вызывается когда разрушается объект
выход за пределы видимости
окончание функции (можно объединить с первым )
при вызове delete

Добавлено через 1 минуту
NEvOl,
для изучения таких вопросов рекомендую написать в деструкторе что то типа
C++
1
cout<<"destructor"<<this;
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 727
06.12.2013, 09:31  [ТС] #4
имеется ввиду деструктор вызывается когда "заканчивается работа с классом" ?
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 1
06.12.2013, 09:35 #5
Цитата Сообщение от NEvOl Посмотреть сообщение
когда "заканчивается работа с классом" ?
Это некорректно.
Правильно написал ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
правильней сказать
"деструктор вызывается когда разрушается объект"
1.выход за пределы видимости
2.окончание функции (можно объединить с первым )
3.при вызове delete
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
06.12.2013, 09:37 #6

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
перечитай свою фразу в контексте с вопросом


Цитата Сообщение от NEvOl Посмотреть сообщение
имеется ввиду деструктор вызывается когда "заканчивается работа с классом" ?
Не совсем так. Если к примеру класс рисует на экране синий круг в начале работы программы, а потом скрывает или рисует его же только по запросу пользователя, то отрисовав первый раз он может больше никогда и не потребоваться. То есть работа с классом закончена, но деструктор не вызван.
0
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 727
06.12.2013, 09:42  [ТС] #7
хорошо, окончание функции имеется ввиду главной ?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
06.12.2013, 09:55 #8
NEvOl, да.
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
06.12.2013, 10:05 #9
Цитата Сообщение от NEvOl Посмотреть сообщение
хорошо, окончание функции имеется ввиду главной ?
необязательно
если объект расположен в стеке то любой функции
несколько примеров
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int fnc()
{
 classA  A;
}// здесь вызовется деструктор для A, выход из fnc
 
classA  B;
classA*  D;
int main()
{
 classA C;
D=new classA;
 fnc();
delete D;// здесь вызовется деструктор для D
}//здесь вызовется деструктор для  C, выход из main
//а здесь по окончании работы всей программы деструктор для  B
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 10:05
Привет! Вот еще темы с ответами:

Динамический объект класса и деструктор - C++
Добрый вечер. Есть класс, конструктор и деструктор: class B { int a; public: B (); ~B (); };

Конструктор и деструктор анонимного класса - C++
Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.

Шаблон класса деструктор вызывает ошибку - C++
Не так чего после того как доходит до деструктора выдает такую ошибку #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Конструктор (деструктор) у класса, не имеющего тип - C++
Можно ли объявить и определить конструктор у класса, который не имеет тип? То есть у меня в программе всего 1 экземпляр этого класса,...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
06.12.2013, 10:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru