【问题标题】:Does private mean different things in C++ and C#?私有在 C++ 和 C# 中是否意味着不同的东西?
【发布时间】:2011-05-15 16:16:30
【问题描述】:

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

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

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

在 C++ 中private: virtual 是有意义的,因为它意味着“我希望从我派生的类覆盖此函数的功能,但它们不应该直接调用它”,换句话说private 控制谁可以调用函数并且对谁可以覆盖它没有影响。

我意识到,由于首先只有派生类可以覆盖,并且由于 C# 禁止 private virtual 函数,所以这个问题可能没有意义,是否存在其他情况下函数的保护级别会影响谁可以覆盖它(@ 987654327@也许)?

【问题讨论】:

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


    【解决方案1】:

    听起来您希望 C++ 世界能够覆盖但不能调用;然后不:你不能在 C# 中这样做。不过,其他方式也可以——要么一开始就不要标记它virtual,或者如果它已经标记它sealedvirtual .

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 1970-01-01
      • 2011-07-11
      • 2017-05-10
      • 2015-07-31
      • 2018-11-13
      • 2018-02-23
      • 2012-12-17
      相关资源
      最近更新 更多