【发布时间】:2011-08-04 18:30:16
【问题描述】:
我有一个这样的代码,它似乎有效。我不知道为什么可以这样访问私有静态方法。
class Base
{
public:
static void f(){std::cout<<"in base\n";};
};
class Derived:private Base
{
};
int main()
{
Derived::f();
return 0;
}
【问题讨论】:
-
不是说
f()是public吗? -
@tom502,
Base类是私有继承的。f不应该对Derived的非成员可见。 -
我认为 f() 不能这样访问
-
您使用的是什么编译器?
Derived::f()只能从Derived(或Base::f())的朋友访问。main好像不是Derived的朋友。