Singleton design pattern is a software design principle that is used to restrict the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. For example, if you are using a logger, that writes logs to a file, you can use a singleton class to create such a logger. You can create a singleton class using the following code −
#include <iostream>
using namespace std;
class Singleton {
public:
static Singleton& getInstance()
{
static std::unique_ptr<Singleton> instance(new Singleton());
if (!instance)
instance = new Singleton;
return *instance;
}
virtual ~Singleton&() = default;
int getData() {
return this -> data;
}
void setData(int data) {
this -> data = data;
}
private:
Singleton() = default;
int data;
};
//Initialize pointer to zero so that it can be initialized in first call to getInstance
Singleton *Singleton::instance = 0;
int main(){
Singleton& s = Singleton::getInstance();
cout << s.getData() << endl;
s->setData(100);
cout << s.getData() << endl;
return 0;
}