我有这个问题,因为单例/命名构造函数.在这两种情况下,真正的构造函数都是受保护的或私有的,两者都不能从外部访问.
例如,一个简短的命名构造函数是这样的:
class A
{
public:
static A createA() { return A(0); } // named constructor
private:
A (int x);
};
int main(void)
{
A a = A::createA();
}
Run Code Online (Sandbox Code Playgroud)
我认为静态方法只能访问静态数据成员,或通过现有对象访问私有数据/方法.但是,在上面的代码中,私有构造函数A()不是静态的,并且在调用它时,也不存在任何对象.所以我能想到的唯一解释是静态方法可以访问同一个类的非静态私有方法.任何人都可以肯定或否定我的想法,可能有一些解释?
我很抱歉,如果这太微不足道,但关键词太常见了,我无法在几十个谷歌页面找到答案.提前致谢.