Почему объект, возвращаемый как «ссылка на значение указателя, установленное на nullptr», является допустимым объектом (singleton) (C ++)? - PullRequest
0 голосов
/ 30 сентября 2019

Я недавно видел пример неполного синглтон-кода класса в учебнике по C ++, и я не могу объяснить, почему он работает.

#include <iostream>

class Singleton
{
    private:
        static Singleton* s_Instance;
    public:
        static Singleton& Get()
        {
            // I put this check to see if it really is nullptr
            if (s_Instance == nullptr)
                std::cout << "nullptr" << std::endl;

            return *s_Instance;
        }

        void Hello()
        {
            std::cout << "Hello" << std::endl;
        }
};

Singleton* Singleton::s_Instance = nullptr;

int main()
{
    Singleton::Get().Hello();
}

Теперь это, очевидно, не настоящий синглтон, но это не главное.

Я не могу понять, почему возвращение значения указателя, установленного на nullptr, возвращает экземпляр класса и почему можно получить значение nullptr. Или что-то еще происходит, что я скучаю?

1 Ответ

1 голос
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...