В лекции Николы Гиганте в 2015 году, он упоминает (в начале), что в стандартной библиотеке нет чисто виртуальных функций (или он не знает о них). Я полагаю, что Алекс Степанов был против этой языковой функции, но с момента первоначального проектирования STL в библиотеку Standard проникли какие-либо чистые виртуальные программы?
FWIW (и поправьте меня, если я ошибаюсь) средства удаления в уникальных указателях в конечном итоге используют виртуальную диспетчеризацию в большинстве реализаций, но это не чистые виртуальные.
STL
(итераторы, алгоритмы и контейнеры)? - person Galik   schedule 27.01.2016unique_ptr
очень невиртуальны, поэтому небезопасны, если вы выполняете приведение к неполиморфному базовому классу.shared_ptr
, с другой стороны, сохраняет функцию удаления со стиранием типа с исходным указателем, так что это безопасно. - person Cheers and hth. - Alf   schedule 27.01.2016STL
. Я подозреваю, что дело в том, что вC++
общее программирование, реализованное вSTL
, полностью ортогонально тому, что можно было бы считать типичными методами в объектно-ориентированном программировании. - person Galik   schedule 27.01.2016std::string
,std::complex
, исключения. Теперьstd::string
иstd::complex
, как правило, слишком критичны по времени для использования виртуальных функций, да и в этом нет необходимости - полиморфизм просто не нужен для простых значений. Но iostream и исключения используют виртуальные функции. - person MSalters   schedule 27.01.2016final
), которые делают многие функции виртуальными в фундаментальных конкретных классах (например, контейнерах), просто не смогут абстрактно указать, что значит переопределить эти функции и каким будет переопределение. разрешено делать. - person curiousguy   schedule 26.10.2019