![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Вадим |
|
|||
|
Unregistered |
Зачем пишут в pure virtual functions тело?
Я встретил даже Pure Virtual Destructor With Body class X { public: virtual ~X() = 0; }; X::~X() {} зачем это? |
|||
|
||||
| FdX |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
Для красоты
Помойму, не обязательно. Попробуй скомпилить без этого |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Нафиг не нужно.
Зачем пишут? Спроси у тех кто пишет. -------------------- Волны гасят ветер... |
|||
|
||||
| Вадим |
|
|||
|
Unregistered |
Я тут обдумал этот момент и по-моему:
a) в тело pure virtual function можно внести ту часть кода которая идентична для всех наследующих классов с целью экономии и т.п. б)насчет дестрактора я нашел вот что The empty implementation for the pure virtual function ensures that at least some implementation exists for the function. -------------------------------------------------------------------------------- |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
а) Тогда какая она pure virtual? Это уже нормальная виртуальная функция. б) Я то как раз всегда верил в идеологию, что чисто виртуальная(абстрактная) функция НЕ должна иметь никакого at least some implementation . Для того я ее и делаю обстрактной, чтобы потомок ОБЯЗАН был бы реализовать ее. -------------------- Волны гасят ветер... |
|||
|
||||
| Grey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
Виртуальный деструктор очень пригодится при наследовании. Если если наследник приведен к типу базового класса и деструктор не виртуальный, то будет вызван деструктор базового класса. В результате получаем утечку памяти.
|
|||
|
||||
| Le Taon |
|
|||
|
Unregistered |
Виртуальная ф-я может быть объявлена в некотором классе чисто виртуальной только с той целью, чтобы запретить инстанцировать этот класс. При этом она может иметь реализацию по умолчанию, к-рая будет доступна в потомках. Виртуальный деструктор - самая подходящая для этих целей ф-я (Просто чтобы не вводить лишних виртуальных ф-й) |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Хм, хитро, хоть и логично. Мне, лично, не приходили еще на ум схемы где класс был бы полностью работоспособен, но создание его экземпляров следовало бы запретить.
-------------------- Волны гасят ветер... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |