![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
написал такой я код:
Вопрос А нафига?) зачем нужны чисто виртуальные деструкторы? где могут пригодиться? -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Чтобы ты не забыл переопределить его в производном классе
-------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
нигде
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Чисто виртуальные деструкторы нужны, чтобы явно сделать класс абстрактным с одной стороны(“чистота”), то есть запретить создавать его экземпляры (совет делать все базовые классы по возможности абстрактными часто упоминается при описании реализации ООП в C++), и, с другой (виртуальность), гарантировать корректное удаление экземпляров производных классов через указатель или ссылку на базовый.
Кстати, то, что у вас написано, у меня вообще не скомпилировалось. Скомпилировалось вот так: Как и продемонстрировано в книжке Мейерса “Эффективное использование C++”, в совете “Убедитесь, что базовые классы имеют виртуальные деструкторы” (в моем издании это 14-ый совет, в другом может отличаться). Более детальное обсуждение можно посмотреть там же. Это сообщение отредактировал(а) Ulysses4j - 17.7.2008, 21:06 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Так он пытается чисто виртуальной функции (деструктору) тело определить нельзя этого делать Это сообщение отредактировал(а) Annihilator - 17.7.2008, 21:08 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Объект с чисто виртуальным деструктором нельзя использовать, так как при удалении объекта вызывается его деструктор, а потом деструктор его базового класса,..
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Annihilator, можно. Для деструктора можно, это единственное исключение. Почитайте Мейерса. Это продиктовано жестким порядком вызова деструкторов в иерархии классов, как сказал Lazin.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Torsten |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
Если других чисто виртуальных функций нет, но нужно сделать класс абстракным.
Это не единственное исключение. Можно делать класс с чисто виртуальными функциями, имеющими тело. --------------------
We have no begining, we have no end. We are infinite. |
||||
|
|||||
Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Вот ведь: век живи — век учись. Совершенно верно: “чистота” виртуальной функции класса запрещает создание экземпляра этого класса в любом случае и позволяет не определять тело данной функции, но не запрещает сделать это. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
jonie |
|
||||||||||||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
1. определять тело можно для любых чисто-виртуальных методов (включая дестркутор).
так что Annihilator гонит, а трое что поставили ему +3 плохо учились)) 2.
3.вот это мне более-менее понравилось...
этим ответом я думаю можно и закончить... если нету еще мыслей.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
И любой наследник сможет создать экземпляр твоего класса. И френд тоже. |
|||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
||||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
пункт стандарта, если смотрели, подскажите...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
||||
|
||||
Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
точно, сам проверил щас да не хотел я никого обманывать... честно ![]() -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |