One of the simplest implementations of the singleton pattern is a static singleton. In this implementation, the object has only static data members:
class Singleton { public: Singleton() {} int& get() { return value_; } private: static int value_;};int Singleton::value_ = 0;
For the rest of this section, we will consider a singleton with one integer data member, and the member functions that provide access to it. We do this only for the sake of a concrete example—the real-life implementation can have an arbitrary number of data members of different types, and an arbitrarily complex API that's provided by the member functions.
The member functions may be static or not. If the member functions are not static, the implementation ...