Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 17.07.2014
Сообщений: 12

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

12.08.2014, 10:48. Показов 5093. Ответов 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,537
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru