gpt4 book ai didi

c++ - 静态方法可以访问同一类的私有(private)方法吗?

转载 作者:行者123 更新时间:2023-12-03 12:52:08 30 4
gpt4 key购买 nike

由于单例/命名构造函数,我有这个问题。在这两种情况下,真正的构造函数都是 protected 或私有(private)的,两者都不能从外部访问。

例如,一个简短的命名构造函数是这样的:

 class A
{
public:
static A createA() { return A(0); } // named constructor
private:
A (int x);
};
int main(void)
{
A a = A::createA();
}

我认为静态方法只能访问静态数据成员,或者通过现有对象访问私有(private)数据/方法。然而,在上面的代码中,私有(private)构造函数 A() 不是静态的,并且在调用它时,也不存在任何对象。所以我能想到的唯一解释是静态方法可以访问同一个类的非静态私有(private)方法。任何人都可以肯定或否定我的想法,并可能提供一些解释吗?

如果这太琐碎了,我深表歉意,但是关键词太常见了,我无法在数十个谷歌页面中找到答案。提前致谢。

最佳答案

静态成员函数与非静态成员函数具有相同的访问权限。所以是的,它可以访问类中的任何公共(public)、 protected 和私有(private)变量。但是,您需要将类的实例传递给函数,以便函数能够访问该成员。否则,静态函数只能直接访问类中的任何其他静态成员。

关于c++ - 静态方法可以访问同一类的私有(private)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61898637/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com