Skip to content

Latest commit

 

History

History
36 lines (23 loc) · 1.47 KB

singleton.md

File metadata and controls

36 lines (23 loc) · 1.47 KB

Singleton

The Singleton utility implements the Singleton design pattern, ensuring that a class has only one instance throughout the application's lifecycle and providing a global point of access to that instance. This pattern is particularly beneficial in scenarios where a single shared resource or manager is required.

Key Features:

  • Prevents multiple instances of a class.
  • Provides controlled access to the single instance.
  • Utilizes modern C++ features like templates and static local variables for efficient implementation.
  • Thread-safe initialization since C++11.

Template Parameters:

  • Derived
    The class that inherits from Singleton. This allows the Singleton utility to manage the instantiation and access of the Derived class.

Constructors and Destructor:

  • Singleton()
    Protected default constructor ensures that only derived classes can instantiate the Singleton.

  • ~Singleton()
    Protected destructor ensures controlled destruction of the Singleton instance.

Assignment Operators:

  • Singleton(const Singleton&) = delete;
    Deletes the copy constructor to prevent copying of the Singleton instance.

  • Singleton& operator=(const Singleton&) = delete;
    Deletes the copy assignment operator to prevent assignment of the Singleton instance.

Methods:

  • static inline Derived& getInstance()
    Provides access to the single instance of the Derived class. If the instance does not exist, it is created upon the first call.