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