【问题标题】:Do access modifiers work for static class functions?访问修饰符是否适用于静态类函数?
【发布时间】:2011-03-11 18:03:13
【问题描述】:

我刚刚遇到了具有protected 静态类函数的代码,例如:

class C {
...

    protected:
        static int fun() { ... }
};

我很好奇静态类函数是否可以具有访问修饰符,这意味着什么?因为它们是类全局变量而不是实例前。

谢谢,博达·赛多。

【问题讨论】:

    标签: c++ static-methods access-modifiers


    【解决方案1】:

    C++ 中的访问修饰符不起作用每个实例。他们总是按类工作。一直都是这样。这使得将它们也应用于静态成员是完全合乎逻辑的。

    这是一个相当流行的误解,即 C++ 中的访问保护应该以某种方式在每个实例中起作用,这似乎也是激发您提出问题的原因。

    【讨论】:

    • 感谢您对此的解释。信不信由你,我以为他们是per-instance!我学习过程中的一个非常严重的错误。现在我知道他们是per-class
    【解决方案2】:

    它仍然具有相同的目的:只有派生类才能调用该静态函数。

    【讨论】:

    • 哦?我认为静态类函数总是可以访问的,无论如何。
    • static 只是意味着它们可以在没有可用对象实例的情况下访问。它们实际上具有全局范围,但它们仍然遵守访问限制。
    【解决方案3】:

    这意味着受保护:静态函数可以从该类的其他成员函数或派生类的成员函数访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2011-02-15
      • 2010-09-20
      • 2011-09-29
      • 2011-05-03
      • 1970-01-01
      相关资源
      最近更新 更多