静态成员函数和常规成员函数都可以访问静态变量。但是,我看到静态成员函数经常被定义为getinstance() 来获取静态变量Instance。为什么会这样?这背后有什么原因吗?我也可以拥有可以获取静态变量实例的常规函数。
最佳答案
你的意思是“为什么它是静态成员而不是非成员”?所以它 (a) 在类的范围内,并且 (b) 可以访问私有(private)构造函数和实例。
如果您真的想让所有相关人员的生活变得更艰难,您可以将其设为非成员(member)。您需要给它一个更详细的名称(例如 get_instance_of_whatever
而不是 whatever::get_instance
),并使其成为 friend 以便它可以访问,如果需要的话创建,实例。将其设为静态成员会更直接。
(我假设您的意思不是“为什么它是静态的而不是非静态的”。显然,您不能在没有对象的情况下调用非静态成员,并且如果不调用访问函数。)
当然是你shouldn't首先实现单例;特别是在 C++ 中,除了反模式的一般概念问题之外,它还导致生命周期问题的雷区。
关于c++ - 为什么我们在实现单例的时候总是做一个静态成员函数呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168167/