Есть ли случаи, когда это используется?
но есть же просто виртуальный деструктор
ну это если тебе что-то надо в деструкторе поделать
Почему? Можно просто virtual ~A() {} написать же. И не заставлять реализовывать каждому потомку деструктор. Вдруг, некоторые потомки не юзают дин память
чисто виртуальный деструктор не скомпилируется
Вроде как компилится при добавлении A::~A() {}. Это в новом стандарте запретили что ли?
Я не понимаю о чем ты https://godbolt.org/z/4fWf5W5Ee
Чисто виртуальный деструктор - это чисто архитектурный прием на этапе проектирования, когда должна быть абстракция, но ничего другого быть не может например
Я просто не знал, что чисто виртуальные функции можно снаружи реализовывать. Так да, понятно что деструктор должен быть реализован
их не только можно реализовывать, но и явно вызывать)
По любому у этого есть другое более правильное название. Ибо ну тут таки есть реализация.
нет другого названия, это чисто виртуальная функция, у которой есть определение
джависты это называют "абстрактный метод"
https://en.cppreference.com/w/cpp/language/abstract_class
Нет, абстрактный метод не имеет реализации
будто чисто виртуальная функция имеет
Ну тут, как написал Тилл, есть определение
стоп посмотрел на этот код
Бессмысленно это... Деструктор всё равно определится, даже если и неявно
это не бессмысленно на стадии проектирования, когда необходимо запретить создавать экземпляры интерфейсного класса, когда никакие другие функции не подходят на место чисто виртуальных
https://godbolt.org/z/KGsjzYrhx
Обсуждают сегодня