【发布时间】:2011-03-11 18:03:13
【问题描述】:
我刚刚遇到了具有protected 静态类函数的代码,例如:
class C {
...
protected:
static int fun() { ... }
};
我很好奇静态类函数是否可以具有访问修饰符,这意味着什么?因为它们是类全局变量而不是实例前。
谢谢,博达·赛多。
【问题讨论】:
标签: c++ static-methods access-modifiers
我刚刚遇到了具有protected 静态类函数的代码,例如:
class C {
...
protected:
static int fun() { ... }
};
我很好奇静态类函数是否可以具有访问修饰符,这意味着什么?因为它们是类全局变量而不是实例前。
谢谢,博达·赛多。
【问题讨论】:
标签: c++ static-methods access-modifiers
C++ 中的访问修饰符不起作用每个实例。他们总是按类工作。一直都是这样。这使得将它们也应用于静态成员是完全合乎逻辑的。
这是一个相当流行的误解,即 C++ 中的访问保护应该以某种方式在每个实例中起作用,这似乎也是激发您提出问题的原因。
【讨论】:
per-instance!我学习过程中的一个非常严重的错误。现在我知道他们是per-class。
它仍然具有相同的目的:只有派生类才能调用该静态函数。
【讨论】:
这意味着受保护:静态函数可以从该类的其他成员函数或派生类的成员函数访问。
【讨论】: