Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
#include <iostream> #include <string> class Logger { public: // C++11 thread-safe local-static Singleton static Logger& getInstance() { static Logger instance; // constructed once, destroyed at program exit return instance; } void log(const std::string& msg) { ++messageCount_; std::cout << "[LOG #" << messageCount_ << "] " << msg << " "; } int messageCount() const { return messageCount_; } // Delete copy/move to enforce singleton semantics Logger(const Logger&) = delete; Logger& operator=(const Logger&) = delete; private: Logger() : messageCount_(0) { std::cout << "Logger initialised "; } int messageCount_; }; class Config { public: static constexpr int MAX_RETRIES = 3; static constexpr double TIMEOUT_SEC = 30.0; static int instanceCount() { return count_; } Config() { ++count_; } ~Config() { --count_; } private: static int count_; // definition in .cpp: int Config::count_ = 0; }; int Config::count_ = 0; int main() { Logger::getInstance().log("Application started"); Logger::getInstance().log("Config loaded"); { Config c1, c2; std::cout << "Config instances: " << Config::instanceCount() << " "; } std::cout << "Config instances: " << Config::instanceCount() << " "; std::cout << "MAX_RETRIES = " << Config::MAX_RETRIES << " "; return 0; }
Result
Open