#include
class Application {
public:
// Метод для получения единственного экземпляра класса
static Application& getInstance() {
static Application instance; // Единственный экземпляр класса
return instance;
}
// Удаляем методы копирования и присваивания для предотвращения создания копий
Application(const Application&) = delete;
Application& operator=(const Application&) = delete;
// Пример метода класса
void run() {
std::cout << "Application is running!" << std::endl;
}
private:
// Приватный конструктор для предотвращения создания экземпляров класса извне
Application() {
std::cout << "Application instance created!" << std::endl;
}
};
int main() {
// Получение единственного экземпляра класса Application
Application& app = Application::getInstance();
app.run();
return 0;
}
Объяснение кода:
Метод getInstance(): Этот метод статический и обеспечивает доступ к единственному экземпляру класса. Внутри метода используется статическая локальная переменная instance, которая инициализируется при первом вызове функции и гарантирует, что объект будет создан только один раз.
Удаление методов копирования и присваивания: Чтобы предотвратить создание копий Singleton, мы удаляем конструктор копирования и оператор присваивания.
Приватный конструктор: Конструктор класса Application сделан приватным, чтобы предотвратить создание экземпляров класса за пределами метода getInstance.
Пример метода run(): Это просто пример метода, который можно вызвать у экземпляра класса.
main() функция: Демонстрация использования класса Application через его Singleton-реализацию.