может кто-нибудь объяснить мне этот код?
class S
{
public:
static S& getInstance()
{
static S instance;
return instance;
}
private:
S() {}
S(S const&); // Don't Implement.
void operator=(S const&); // Don't implement
};
Я понял: getInstance - это статический метод, который возвращает ссылку на экземпляр, но где этот экземпляр создан? Я не вижу новых S(); так..
Сущность объекта области с статическим временем хранения (в вашем случае static S instance;
) static S instance;
инициализируется, когда первый элемент управления проходит через его объявление. До С++ 11 это не является потокобезопасным (однако некоторые компиляторы предлагают варианты для обеспечения безопасности потоков). Что касается С++ 11, в стандарте указано, что "Если элемент управления входит в объявление одновременно при инициализации переменной, одновременное выполнение должно ждать завершения инициализации".
static S instance;
- вам не нужноnew
чтобы создать объект.