c++ - 为什么我们在实现单例的时候总是做一个静态成员函数呢?

标签 c++ singleton

静态成员函数和常规成员函数都可以访问静态变量。但是,我看到静态成员函数经常被定义为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/

相关文章:

java - 如何实现每30分钟登录一次的客户端?

python - Django "Singleton model"存储用户设置

java - Spring MVC 中单例 bean 多次实例化?

Objective-C:使用单例还是使用类作为对象?

C# 单例线程安全

c++ - 用于定义变量的自动类型

c++ - 是否可以设置 std::tr1::tuple 的默认值?

c++ - iterator_traits中的嵌套指针类型有什么用?

c++ - 静态变量 - undefined reference

c++ - 一对原始类型的良好散列函数