본문 바로가기
공부/C, C++

[C++] 싱글톤 패턴(2) - 데이터 영역에 객체 생성 방식

by 김샤랑 2022. 9. 8.

[C++] 싱글톤 패턴(2) - 데이터 영역에 객체  생성 방식


이번 포스팅은 싱글톤 패턴 2로 이전 포스팅과 다른 방식으로 싱글톤을 구현한다.

이전 포스팅 링크이다.

읽고 오길 바란다.

 

https://syrang.tistory.com/87

 

[C++] 싱글톤 패턴(1) - 동적 할당 방식

[C++]  싱글톤 패턴(1) - 동적 할당 방식 오랜만에 포스팅을 쓴다. 최근에 디자인 패턴중 하나인 싱글톤 패턴에 대해 배웠다. 역시 기록해두는 일이 머릿속에서도 정리가 잘되고 기억이 오래 남는

syrang.tistory.com

 


1. 이번에도 똑같이 객체의 생성자와 소멸자를 private로 설정해준다.

 

// GameEngine.h

class GameEngine
{

private:
	GameEngine();
	~GameEngine();
};

 


2. 객체를 생성해주는 GetInst() 함수를 정적 멤버 함수로 만든다.

 

// GameEngine.h

class GameEngine
{
public:
    static GameEngine* GetInst()
    {
    	static GameEngine engine; // 데이터 메모리 사용. static라서 하나만 생성.
        
       	return &engine;
    }

private:
	GameEngine();
	~GameEngine();
};

 

이전과 다른 점은 객체를 static으로 선언한다는 것이다.

이 경우 데이터 메모리 영역에 올라간다.

데이터 영역에 선언되면  프로그램이 종료될 때까지 살아있는다.

 


3. 장단점

 

장점: 동적할당 방식처럼 해지를 신경 쓸 필요 없다. 

단점: 반대로 생각하면 프로그램이 실행되는 중간에 지울 수 없다. 

 

필요할 때 객체가 생성이 되는 게 아니라 객체를 생성해두고 프로그램이 종료될 때까지 살아있는다.

만약 프로그램이 종료될때까지 사용하지 않는다면 허망할 수 도 있다.

 

 


이렇게 두가지 방식의 싱글톤 구현을 알아보았다.

어떤 방식을 사용할지는 본인의 선택사항이다. 

댓글