私有在C ++和C#中是否意味着不同的东西?

时间:2010-11-25 12:01:34

标签: c# c++ language-design private

我想知道为什么C#不允许private virtual函数并且遇到恰当命名的Why are private virtual methods illegal in C#?

在接受的答案中Eric Lippert(谁可能知道他在说什么......)说:

  

如果您希望限制在非嵌套​​派生类中重写方法的能力,那么您可以通过限制非嵌套类从基类派生的能力来实现;

在C ++中private: virtual是有意义的,因为它意味着“我希望从我派生的类覆盖此函数的功能,但它们不能直接调用它”,in其他单词private控制谁可以调用函数,但对谁可以覆盖它没有影响。

我意识到,因为只有派生类可以首先覆盖,并且由于C#禁止private virtual函数,这个问题可能毫无意义,是否存在其他方案,其中函数的保护级别可以影响谁可以覆盖它(也许protected internal)?

1 个答案:

答案 0 :(得分:7)

听起来你希望C ++世界能够覆盖而不是呼叫;然后没有:你不能在C#中做到这一点。 其他方式可以很好 - 或者首先不标记virtual,或者标记sealed如果已经 > virtual