170 похожих чатов

А зачем у нас есть возможность сделать деструктор чисто виртуальным?

Есть ли случаи, когда это используется?

20 ответов

6 просмотров
Niceguy- Автор вопроса

но есть же просто виртуальный деструктор

Niceguy
но есть же просто виртуальный деструктор

ну это если тебе что-то надо в деструкторе поделать

Niceguy- Автор вопроса
feedable
ну это если тебе что-то надо в деструкторе поделат...

Почему? Можно просто virtual ~A() {} написать же. И не заставлять реализовывать каждому потомку деструктор. Вдруг, некоторые потомки не юзают дин память

чисто виртуальный деструктор не скомпилируется

Niceguy- Автор вопроса
Aleksander Spichak
чисто виртуальный деструктор не скомпилируется

Вроде как компилится при добавлении A::~A() {}. Это в новом стандарте запретили что ли?

Niceguy
Вроде как компилится при добавлении A::~A() {}. Эт...

Я не понимаю о чем ты https://godbolt.org/z/4fWf5W5Ee

Чисто виртуальный деструктор - это чисто архитектурный прием на этапе проектирования, когда должна быть абстракция, но ничего другого быть не может например

Я просто не знал, что чисто виртуальные функции можно снаружи реализовывать. Так да, понятно что деструктор должен быть реализован

Aleksander Spichak
Я просто не знал, что чисто виртуальные функции мо...

их не только можно реализовывать, но и явно вызывать)

По любому у этого есть другое более правильное название. Ибо ну тут таки есть реализация.

Aleksander Spichak
По любому у этого есть другое более правильное на...

нет другого названия, это чисто виртуальная функция, у которой есть определение

Till Schneider
нет другого названия, это чисто виртуальная функци...

джависты это называют "абстрактный метод"

usernameak
джависты это называют "абстрактный метод"

Нет, абстрактный метод не имеет реализации

Aleksander Spichak
Нет, абстрактный метод не имеет реализации

будто чисто виртуальная функция имеет

usernameak
будто чисто виртуальная функция имеет

Ну тут, как написал Тилл, есть определение

Till Schneider
Чисто виртуальный деструктор - это чисто архитекту...

Бессмысленно это... Деструктор всё равно определится, даже если и неявно

Ilya Zviagin
Бессмысленно это... Деструктор всё равно определит...

это не бессмысленно на стадии проектирования, когда необходимо запретить создавать экземпляры интерфейсного класса, когда никакие другие функции не подходят на место чисто виртуальных

Niceguy- Автор вопроса

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann ٩( 💢•̀ з•́)و Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта