[C++] 싱글톤 패턴(2) - 데이터 영역에 객체 생성 방식
이번 포스팅은 싱글톤 패턴 2로 이전 포스팅과 다른 방식으로 싱글톤을 구현한다.
이전 포스팅 링크이다.
읽고 오길 바란다.
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. 장단점
장점: 동적할당 방식처럼 해지를 신경 쓸 필요 없다.
단점: 반대로 생각하면 프로그램이 실행되는 중간에 지울 수 없다.
필요할 때 객체가 생성이 되는 게 아니라 객체를 생성해두고 프로그램이 종료될 때까지 살아있는다.
만약 프로그램이 종료될때까지 사용하지 않는다면 허망할 수 도 있다.
이렇게 두가지 방식의 싱글톤 구현을 알아보았다.
어떤 방식을 사용할지는 본인의 선택사항이다.
'공부 > C, C++' 카테고리의 다른 글
[c++기초] #include <iostream> 헤더파일을 알고 싶었다. (0) | 2023.05.09 |
---|---|
[WinAPI] 글자(텍스트) 출력, 글자 색 변경, 글자 배경색 투명하게 (0) | 2022.11.18 |
[C++] 싱글톤 패턴(1) - 동적 할당 방식 (0) | 2022.09.08 |
[C/C++] Class (3) - 레퍼런스 변수 (0) | 2022.03.22 |
[C/C++] Class (2) - 생성자, 소멸자 (0) | 2022.03.22 |
댓글