Означает ли частное разные вещи в C ++ и C #?

Мне было интересно, почему C # не разрешает частные виртуальные функции, и натолкнулся на метко названный Почему частные виртуальные методы незаконны в C #?

В принятом ответе Эрик Липперт (кто, вероятно, знает, о чем он говорит ...) сказал:

Если вы желаете ограничить возможность переопределения метода в не вложенных производных классы, то вы можете сделать это, ограничив возможность не вложенных классов быть производными от базового класса;

В C ++ private: virtual имеет смысл, потому что это означает «Я хочу, чтобы классы, производные от меня, переопределяли функциональность этой функции, но они не должны иметь возможность вызывать ее напрямую» , другими словами private контролирует, кто может вызывать функцию, и не влияет на то, кто может ее переопределить.

Я понимаю, что, поскольку только производные классы могут переопределять в первую очередь и поскольку C # запрещает частные виртуальные функции, этот вопрос может быть бессмысленным, существуют ли другие сценарии, в которых уровень защиты функции может влиять на то, кто можно переопределить ( защищенный внутренний возможно)?

6
задан Community 23 May 2017 в 11:47
поделиться