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