Мне было интересно, почему C # не разрешает частные виртуальные
функции, и натолкнулся на метко названный Почему частные виртуальные методы незаконны в C #?
В принятом ответе Эрик Липперт (кто, вероятно, знает, о чем он говорит ...) сказал:
Если вы желаете ограничить возможность переопределения метода в не вложенных производных классы, то вы можете сделать это, ограничив возможность не вложенных классов быть производными от базового класса;
В C ++ private: virtual
имеет смысл, потому что это означает «Я хочу, чтобы классы, производные от меня, переопределяли функциональность этой функции, но они не должны иметь возможность вызывать ее напрямую» , другими словами private
контролирует, кто может вызывать функцию, и не влияет на то, кто может ее переопределить.
Я понимаю, что, поскольку только производные классы могут переопределять в первую очередь и поскольку C # запрещает частные виртуальные
функции, этот вопрос может быть бессмысленным, существуют ли другие сценарии, в которых уровень защиты функции может влиять на то, кто можно переопределить ( защищенный внутренний
возможно)?