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

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

Восстановить пароль Регистрация
 
NEvOl
12 / 11 / 0
Регистрация: 13.08.2012
Сообщений: 616
06.12.2013, 09:14     Деструктор класса #1
Имеется собственный класс, возник вопрос, деструктор класса вызывается не явно ? если так, то в какой момент он вызывается ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
06.12.2013, 09:18     Деструктор класса #2
Цитата Сообщение от NEvOl Посмотреть сообщение
деструктор класса вызывается не явно ?
Когда он не вызывается явно.
Цитата Сообщение от NEvOl Посмотреть сообщение
в какой момент он вызывается ?
Когда он больше не используется. Например, когда выходит из области видимости.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
06.12.2013, 09:25     Деструктор класса #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Когда он больше не используется.
Деструктор?
перечитай свою фразу в контексте с вопросом
правильней сказать деструктор вызывается когда разрушается объект
выход за пределы видимости
окончание функции (можно объединить с первым )
при вызове delete

Добавлено через 1 минуту
NEvOl,
для изучения таких вопросов рекомендую написать в деструкторе что то типа
C++
1
cout<<"destructor"<<this;
NEvOl
12 / 11 / 0
Регистрация: 13.08.2012
Сообщений: 616
06.12.2013, 09:31  [ТС]     Деструктор класса #4
имеется ввиду деструктор вызывается когда "заканчивается работа с классом" ?
zss
Модератор
Эксперт С++
 Аватар для zss
5952 / 5557 / 1787
Регистрация: 18.12.2011
Сообщений: 14,202
Завершенные тесты: 1
06.12.2013, 09:35     Деструктор класса #5
Цитата Сообщение от NEvOl Посмотреть сообщение
когда "заканчивается работа с классом" ?
Это некорректно.
Правильно написал ValeryS,
Цитата Сообщение от ValeryS Посмотреть сообщение
правильней сказать
"деструктор вызывается когда разрушается объект"
1.выход за пределы видимости
2.окончание функции (можно объединить с первым )
3.при вызове delete
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
06.12.2013, 09:37     Деструктор класса #6

Не по теме:

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


Цитата Сообщение от NEvOl Посмотреть сообщение
имеется ввиду деструктор вызывается когда "заканчивается работа с классом" ?
Не совсем так. Если к примеру класс рисует на экране синий круг в начале работы программы, а потом скрывает или рисует его же только по запросу пользователя, то отрисовав первый раз он может больше никогда и не потребоваться. То есть работа с классом закончена, но деструктор не вызван.
NEvOl
12 / 11 / 0
Регистрация: 13.08.2012
Сообщений: 616
06.12.2013, 09:42  [ТС]     Деструктор класса #7
хорошо, окончание функции имеется ввиду главной ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
06.12.2013, 09:55     Деструктор класса #8
NEvOl, да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 10:05     Деструктор класса
Еще ссылки по теме:

Для класса задать конструктор и деструктор C++
C++ Конструктор и деструктор анонимного класса
Деструктор уничтожает 3 объекта класса. Почему? C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
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
Yandex
Объявления
06.12.2013, 10:05     Деструктор класса
Ответ Создать тему
Опции темы

Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru