/* * C++ Design Patterns: Singleton * Author: Jakub Vojvoda [github.com/JakubVojvoda] * 2016 * * Source code is licensed under MIT License * (for more details see LICENSE) * */ #include /* * Singleton * has private static variable to hold one instance of the class * and method which gives us a way to instantiate the class */ class Singleton { public: static Singleton* get() { if ( !instance ) { instance = new Singleton(); } return instance; } static void restart() { if ( instance ) { delete instance; } } void tell() { std::cout << "This is Singleton." << std::endl; // ... } // ... private: Singleton() {} static Singleton *instance; // ... }; Singleton* Singleton::instance = nullptr; int main() { Singleton::get()->tell(); Singleton::restart(); return 0; }