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

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

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

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

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

Имеется собственный класс, возник вопрос, деструктор класса вызывается не явно ? если так, то в какой момент он вызывается ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,391
Завершенные тесты: 1
06.12.2013, 09:18     Деструктор класса #2
Цитата Сообщение от NEvOl Посмотреть сообщение
деструктор класса вызывается не явно ?
Когда он не вызывается явно.
Цитата Сообщение от NEvOl Посмотреть сообщение
в какой момент он вызывается ?
Когда он больше не используется. Например, когда выходит из области видимости.
ValeryS
Модератор
6451 / 4917 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
06.12.2013, 09:25     Деструктор класса #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Когда он больше не используется.
Деструктор?
перечитай свою фразу в контексте с вопросом
правильней сказать деструктор вызывается когда разрушается объект
выход за пределы видимости
окончание функции (можно объединить с первым )
при вызове delete

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

Не по теме:

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


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

Конструктор (деструктор) у класса, не имеющего тип C++
C++ Конструкторы и деструктор класса BigInteger
C++ Дописать конструктор и деструктор для класса
Написать деструктор для данного класса C++
деструктор класса C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6451 / 4917 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
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     Деструктор класса
Ответ Создать тему
Опции темы

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