Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class Singleton {
public:
Singleton(const Singleton& rhs) =delete;
Singleton& operator=(const Singleton& rhs) =delete;
static Singleton *getInstance() {
return instance_;
}
private:
Singleton();
static Singleton *instance_;
};
мутексРезануло глаза. В русскоязычной литературе всё-таки «мьютекс» обычно пишут.
Singleton & singletonThe = Singleton::Instance();
__declspec(selectany) Singleton & singletonThe = Singleton::Instance();
Singleton::Instance() вместо singletonThe – два идентификатора вместо одного? Или какая-то другая причина?__declspec(selectany) поддерживается и в gcc, и в Borland C++, и в Clang с ключом -fms-extensions.main глобальные переменные должны быть инициализированы. Практически любой тест должен бы достигать этой точки.singletonInstance
Singleton::Instance()
singletonInstance и singletonThe на g_singletonInstance.Singleton::Instance(), мы должны опасаться, что может произойти повторный вход (reenter) в метод, из которого делаем вызов. Примерно так:A::Instance() приводит к вызову B::Instance()B::Instance() приводит к вызову C::Instance()X::Instance() приводит к вызову A::Instance()
«Правило ноля»