Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pure virtual 
:(
    Опции темы
Вадим
Дата 22.9.2002, 02:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Зачем пишут в pure virtual functions тело?

Я встретил даже Pure Virtual Destructor With Body

class X
{
public:
 virtual ~X() = 0;
};

X::~X() {}


зачем это?
  Вверх
FdX
Дата 22.9.2002, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Для красоты :)

Помойму, не обязательно. Попробуй скомпилить без этого
PM MAIL ICQ   Вверх
Fantasist
Дата 22.9.2002, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Нафиг не нужно.
Зачем пишут? Спроси у тех кто пишет.  :)


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Вадим
Дата 23.9.2002, 01:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я тут обдумал этот момент и по-моему:

a) в тело pure virtual function можно внести ту часть кода которая идентична для всех наследующих классов с целью экономии и т.п.

б)насчет дестрактора я нашел вот что
The empty implementation for the pure virtual function ensures that at least some implementation exists for the function.  

--------------------------------------------------------------------------------
  Вверх
Fantasist
Дата 23.9.2002, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата(Guest @ 22.9.2002, 18:29)
Я тут обдумал этот момент и по-моему:

a) в тело pure virtual function можно внести ту часть кода которая идентична для всех наследующих классов с целью экономии и т.п.

б)насчет дестрактора я нашел вот что
The empty implementation for the pure virtual function ensures that at least some implementation exists for the function.  

--------------------------------------------------------------------------------

а) Тогда какая она pure virtual? Это уже нормальная виртуальная функция.

б) Я то как раз всегда верил в идеологию, что чисто виртуальная(абстрактная) функция НЕ должна иметь никакого at least some implementation . Для того я ее и делаю обстрактной, чтобы потомок ОБЯЗАН был бы реализовать ее.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Grey
Дата 23.9.2002, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Виртуальный деструктор очень пригодится при наследовании. Если если наследник приведен к типу базового класса и деструктор не виртуальный, то будет вызван деструктор базового класса. В результате получаем утечку памяти.
PM MAIL   Вверх
Le Taon
Дата 27.9.2002, 07:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Тогда какая она pure virtual? Это уже нормальная виртуальная функция.


Виртуальная ф-я может быть объявлена в некотором классе чисто виртуальной только с той целью, чтобы запретить инстанцировать этот класс.

При этом она может иметь реализацию по умолчанию, к-рая будет доступна в потомках.

Виртуальный деструктор - самая подходящая для этих целей ф-я
(Просто чтобы не вводить лишних виртуальных ф-й)
  Вверх
Fantasist
Дата 30.9.2002, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Хм, хитро, хоть и логично. Мне, лично, не приходили еще на ум схемы где класс был бы полностью работоспособен, но создание его экземпляров следовало бы запретить.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.