c++ - 使用单例类的最有效方式

标签 c++ design-patterns singleton pass-by-reference

在 C++ 中,我使用单例类并引用另一个类中的唯一实例。我想知道访问此实例的最有效方法是什么,因为它是一个大型数据结构。我考虑了这些事情。

  1. 从单例类获取引用,而不是按值传递数据结构
  2. 在我的第二个使用单例类的类中使用全局实例:

    Singleton* singleInstance;
    
    SingletonUser::SingletonUser ()
    {
        singleInstance = Singleton::getInstance(); //passes the single instance by   reference, then it will be used in the class wherever needed
    }
    
  3. 在第二个类的函数内做同样的事情,这样我就可以在需要时获得对单例类实例的引用(需要在多个函数中多次访问它)。

    <

我不确定哪种做法最好。有人可以解释一下吗,如果有更有效的方法,也可以解释一下吗?

谢谢!

最佳答案

如果您按值传递单例实例,那么它就不是真正的单例,对吗?

当您需要访问实例时,只需返回一个实例的引用(或指针)(#1)。为每个客户端缓存一次引用只会增加复杂性,而且几乎肯定不会更快。

除了增加了复杂性之外,我不确定 #1 和 #3 之间的区别是什么。两者都使用函数通过引用/指针访问单例实例。

关于c++ - 使用单例类的最有效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9042896/

相关文章:

android - 只要服务存在,如何持有一个对象?

c++ - 如何使用 ULARGE_INTEGER 进行算术运算

c++ - C++模板类问题中的类型条件

c++ - 试图计算两次之间的差异,不会减去

c++ - 使用 std::initializer_list 作为成员变量

c# - 有没有办法拥有一个不会被继承的公共(public)方法?

javascript - 您如何设计和实现应用程序范围的事件检测机制来捕获大型 Angular 应用程序中的点击事件?

design-patterns - 如何实践OOP设计的SOLID原则?

c++ - 如何在C++中实现单例

java - 为什么 Jersey 会导致单例类无法工作?