0 / 0 / 0
Регистрация: 17.07.2014
Сообщений: 12

Обязательно ли объявление виртуального деструктора в абстрактном классе

12.08.2014, 10:48. Показов 5215. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно выполнял задание, и забыл в абстрактном классе(использовалось наследование) объявить виртуальный диструктор. С точки зрения профессионального программирования, является ли это серьёзной ошибкой?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2014, 10:48
Ответы с готовыми решениями:

Магия виртуального деструктора
Если убрать определение virtual (стр. 18), то вызывается (47) только деструктор класса Person (деструктор Student не вызывается). Вопрос:...

Объяснить использование виртуального деструктора
Ребят для чего здесь используется виртуальный деструктор? using namespace std; class Ostanovki { protected: char* name; ...

Клонирование в абстрактном классе
Есть абстрактный класс с полями и методом клон, и два потомка со своими полями. Я хочу чтобы поля абстрактного класса клонировались в...

25
Заблокирован
13.08.2014, 10:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ct0r Посмотреть сообщение
Компилятор и не выдает никакой ошибки. Это же runtime-ошибка, а не compile-time.
Цитата Сообщение от ct0r Посмотреть сообщение
Ты неправильно понимаешь термин undefined behavior. Там поведение зависит не только от особенностей реализации компилятора и его опций, но и от состояния памяти в данный момент времени. То есть можно легко получать разные ошибки на разных системах, несмотря на то, что программа собиралась каким-то конкретным компилятором и она одна. Ты же говоришь не про undefined behavior, а про implementation-defined или unspecified behavior. Но в данном случае имеет место именно undefined behavior, а его допущение - грубая ошибка разработчика.
Речь идет о том, что компилятор не знает истинного размера объекта для его удаления, а стало быть просто ставит размер базового класса, при удалении. Однако, если размер потомка больше, чем размер базового класса, мы либо получим ошибку времени выполнения, либо утечку памяти ( о которой я и писал в первом посте темы, за что меня и начали унижать). Причем, результат не определен и да, как я и говорил, каждый компилятор волен действовать здесь по своему.
Насчет implementation-defined , я не мог так считать, ибо в таком случае мы бы получили правильную и работоспособную программу, где я говорил, что при сбое или утечке памяти все нормально хорошо? Ваши фантазии держите при себе.

Изначально меня ввели в заблуждение ошибочные ответы т.н. "экспертов", а именно, что компилятор, прежде чем запускать приложение, выдает ошибку, в тот момент не было времени на проверку. После, проверив эту информацию, я понял, всю несостоятельность критики в мой адрес, а также убедился в очередной раз в некомпететнтости и глупости "знающих людей" этого форума.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
13.08.2014, 10:57
Цитата Сообщение от Trwsdf Посмотреть сообщение
Речь идет о том, что компилятор не знает истинного размера объекта для его удаления, а стало быть просто ставит размер базового класса, при удалении
Э-э-э, опять фантазии уровня строгих указателей, размер тут совершенно ни при чем. Уважаемый "эксперт", сами разберетесь где заблуждаетесь или разжевать?
0
Заблокирован
13.08.2014, 11:17
Цитата Сообщение от Voivoid Посмотреть сообщение
Э-э-э, опять фантазии уровня строгих указателей, размер тут совершенно ни при чем. Уважаемый "эксперт", сами разберетесь где заблуждаетесь или разжевать?
ок, тогда и Страуструп в своей книге "Страуструп Б. Язык Программирования С++ - 2011" на стр. 510 пишет черт знает о чем. Согласен мы с ним оба "фантазеры" перед "папками" сидящими здесь.

Добавлено через 9 минут
насчет строгих указателей, советую вам наконецто то разобраться с ними. Что такое int*a и что такое int* a[10], чтобы меньше позориться.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
13.08.2014, 11:17
Trwsdf, ты пишешь бред. Хотя бы сам возьми и проверь свою "гипотезу". Покажи, как деструктор вообще может влиять на утечки памяти??? Деструктор вызывается в коде, который проводит деаллокацию объекта, при этом сам ничего о деаллокации знать не может. Ему всё равно, объект в куче или на стеке и.т.д.
0
Заблокирован
13.08.2014, 11:32
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Trwsdf, ты пишешь бред. Хотя бы сам возьми и проверь свою "гипотезу". Покажи, как деструктор вообще может влиять на утечки памяти??? Деструктор вызывается в коде, который проводит деаллокацию объекта, при этом сам ничего о деаллокации знать не может. Ему всё равно, объект в куче или на стеке и.т.д.
Омг ))). Ну ок все дураки и я и Страуструп, один ты умный.
Сиди дальше тут и крути коровам хвосты на этом форуме "самый умный", а мне некогда, мне надо работать.

Информация для остальных администраторов форума приписавших себе титул "экспертов" с++ , можете лить грязь в догонку сколько хотите, я же себя уважаю, и сдержал слово, насчет ухода отсюда.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
13.08.2014, 11:34
Цитата Сообщение от Trwsdf Посмотреть сообщение
Страуструп в своей книге "Страуструп Б. Язык Программирования С++ - 2011" на стр. 510 пишет черт знает о чем
У меня этой книги нет под рукой. Если приведешь цитату - я тебе объясню что там имеется в виду.

Не по теме:

Цитата Сообщение от Trwsdf Посмотреть сообщение
насчет строгих указателей, советую вам наконецто то разобраться с ними. Что такое int*a и что такое int* a[10], чтобы меньше позориться.
Ты в той теме лучше что-нибудь ответь :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2014, 11:34

Интерфейс в абстрактном классе
Есть у меня абстрактный класс Figure, от которого наследуются Circle, Romb, Triangle и т.д. Я хочу, чтобы все производные классы...

Константа в абстрактном классе
Добрый день! Может быть кто знает, есть ли метод, которым можно гарантировать, что константа, описанная в абстрактном классе или...

Сигналы в абстрактном классе
Мне очень нужен сигнал в классе ResetInterface, но класс абстрактный class ResetInterface { public: virtual void reset() =...

Массив структур в абстрактном классе
Объясните пожалуйста на пальцах, почему возникает ошибка namespace ConsoleApplication3 { public struct _Information { ...

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


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru