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

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

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

20 ответов

15 просмотров
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- Автор вопроса

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта