Я могу понять, что может возникнуть причина объявить реализованную (в отличие от чистой) виртуальную функцию частной или защищенной. Afaik, если вы объявите реализованный виртуальный метод защищенным, ваш дочерний класс может вызвать метод базового класса (и никто не может). Если вы объявите его закрытым, то только базовый класс может вызвать стандартную реализацию виртуального метода.
Однако, с чистыми виртуальными системами, нет базовой реализации... Так разве это не функционально эквивалентно объявлению чистого виртуального как частного или защищенного? Защищенный чистый виртуальный интерфейс не имеет смысла, потому что вы никогда не сможете вызвать соответствующий метод базового класса. Существуют ли какие-либо сценарии, в которых защищенный чистый виртуальный смысл имеет смысл?
Есть несколько аналогичных тем на SO, но я не мог найти ничего, что бы сжато ответили на мой вопрос.