и посмотреть медиа
C/C++ - вопросы собесов
и посмотреть медиа
Вопросы собесов C/C++.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Вопросы для собеседований по C/C++.
🤔 Как вы будете реализовывать Singletone ? Это шаблон проектирования, который гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Существует несколько способов реализации Singleton, включая ленивую инициализацию, использование static и многопоточную безопасность. 🚩Основные методы реализации 🟠Ленивая инициализация (Lazy Initialization) При ленивой инициализации объект создается только при первом обращении к нему. class Singleton { public: static Singleton& getInstance() { static Singleton instance; return instance; } // Удаляем конструкторы копирования и присваивания Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; private: Singleton() {} // Приватный конструктор }; 🟠Инициализация при запуске (Eager Initialization) При инициализации при запуске объект создается сразу при загрузке программы. class Singleton { public: static Singleton& getInstance() { return instance; } Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; private: Singleton() {} static Singleton instance; // Статический экземпляр }; Singleton Singleton::instance; 🟠Многопоточная безопасность (Thread-safe Singleton) Используя std::call_once и std::once_flag, можно обеспечить безопасность при доступе из нескольких потоков. #include class Singleton { public: static Singleton& getInstance() { std::call_once(initInstanceFlag, &Singleton::initSingleton); return *instance; } Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; private: Singleton() {} static void initSingleton() { instance = new Singleton(); } static Singleton* instance; static std::once_flag initInstanceFlag; }; Singleton* Singleton::instance = nullptr; std::once_flag Singleton::initInstanceFlag; 🚩Плюсы ➕Ленивая инициализация Экономит ресурсы, так как объект создается только при необходимости. ➕Инициализация при запуске Простая реализация, не требует дополнительных проверок, но объект создается даже если не используется. ➕Многопоточная безопасность Обеспечивает корректное создание объекта в многопоточной среде, но сложнее в реализации. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!
CanalAVARICEwith relevant content: news, updates and useful materials for daily reading.
World of Cybersecurity: Protecting Systems, News, TechniquesNight Hawks.