![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
В приведённом Вами, у деструктора есть объявление, но не определение.
Вообще уже посмотрел, что да, определение может быть. Я как-то в таких случаях создаю отдельный protected-метод, который и вызываю. Спасибо за интересную подробность. |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
![]()
Встречал лишь одно упоминание в какой-то книжке о написании кода в чисто виртуальных ф-иях и там предлагалось в них писать код логгирования или еще что-нибудь для детекта этой ситуации, т.е. примерно то, что вы и написали (cerr << "че за хрень"; ). на практике никогда такого не встречал и надеюсь не встречу. никакого полезного кода для наследников в чисто виртуальных ф-иях быть не должно. это глюк дизайна класса.
|
![]() |
![]() |
![]() |
#13 | |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#14 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]() Цитата:
Вам надо быстрее приобретать опыт программирования на С++, а не демонстрировать свое невежество!
Со мной можно встретиться на www.clipper.borda.ru
|
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
![]()
"никакого полезного кода для наследников в чисто виртуальных ф-иях быть не должно. это глюк дизайна класса."
От того, что код можно написать в чисто виртуальных ф-иях еще не значит что его туда нужно писать. Полезный код, который пригодился бы в наследниках и засунутый в чисто виртуальную ф-ию - это скорее всего кривое проектирование класса. Деструктор - особый случай и он конечно же должен быть при любых обстоятельствах. Необходимость в чисто виртуальном деструкторе - скорее всего из-за кривого дизайна класса. Приведите пример из жизни (не академический и не высосанный из пальца), где это понадобилось. Где понадобился код в чисто виртуальных ф-иях? Где потребовался чисто виртуальный деструктор и почему там не получилось обойтись протектед конструкторами? Чисто вирт. деструктор потребует явного написания деструкторов в наследниках. А зачем это требовать, если кого-то устраивает то, что генерится по дефолту. Если в базе деструктор виртуальный, то в наследниках он будет виртуальным всегда, хоть дефолтный, хоть явно определенный. Код диангостики вызова чисто виртуального метода - не является полезным для наследников. Ссылки на тему: http://alenacpp.blogspot.com/2005/03/blog-post.html http://www.gotw.ca/gotw/031.htm В общем, подтвертиде свои высказывания примерами. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сборщик мусора в динамическом списке | Homutova_Julia | Помощь студентам | 4 | 17.06.2011 19:09 |
Объекты классов, деструкторы, конструкторы | GerNick | Общие вопросы C/C++ | 18 | 15.03.2011 08:30 |
Строки разных цветов в списке. | AntiKaspersky | Общие вопросы .NET | 2 | 14.01.2011 12:42 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |