Singleton

Ryan Ham·2024년 5월 30일
0

C++

목록 보기
21/26

Singleton

싱글톤 클래스는 객체 지향 프로그래밍에서 객체를 바라보는 여러 철학 중 하나이다. 이 정신(?)은 한 클래스마다 단 하나의 객체만 존재한다는 철학이다. 다음 코드에서 static과 접근지정자를 적극 활용해 CPP로 Singleton 클래스를 구현해보자.


class CSingleton
{

private:
    CSingleton()
    {
    }
    ~CSingleton()
    {
    }

private:
    static CSingleton* mInst;

public:
    static CSingleton* GetInst()
    {
        if (nullptr == mInst)
            mInst = new CSingleton;
        return mInst;
    }

    static void DestroyInst()
    {
        if (nullptr != mInst)
        {
            delete mInst;
            mInst = nullptr;
        }
    }
};

// mInst가 private임에도 불구하고 static 변수라 위와 같이 nullptr를 대입해 주는 것이 가능하다. 
CSingleton* CSingleton::mInst = nullptr;

포인트 1.
객체의 생성자와 소멸자는 private로 둔다.

포인트 2.
static으로 만든 멤버 함수를 통해서만 객체 생성 및 소멸이 가능하게 만든다. 이 둘을 static으로 만든 이유는 객체 생성은 private으로 막혔고 static 멤버 함수는 객체 생성 없이 함수를 call 할 수 있기 때문.

포인트 3.
CSingleton 포인터를 private-static 변수로 만든다. public-static으로 선언된 멤버함수에서 이 포인터 변수를 체크.

profile
🏦KAIST EE | 🏦SNU AI(빅데이터 핀테크 전문가 과정) | 📙CryptoHipsters 저자

0개의 댓글