싱글톤 패턴

김태훈·2024년 1월 7일
0

Win32API

목록 보기
4/24
post-custom-banner

싱글톤 패턴

객체의 생성을 1개로 제한
어디서든 쉽게 접근 가능

extern 사용 불가
이유:객체를 여러 개 만들수 있음

올바른 방법 :생성자를 숨긴다

객체를 얻을수 있는 함수를 제공하여 어디서든 접근케 한다
그 함수는 객체 하나만 관리한다

첫 번째 방법

(정적 멤버 함수 릴리즈 추가)

static 멤버 함수
객체가 없어도 호출 가능= 누가 호출했는지 알 필요 없다, this가 존재하지 않는다.
따라서 static 멤버만이 멤버 함수에 접근 가능

/*클래스 정적 멤버는 클래스 밖에서 초기화 해줘야 한다,
그리고 그 초기화는 프로그램 시작 할때 한 번만 실행(문법)
함수안의 정적 변수는 그 함수 안에서만 접근 가능.

파일 안의 정적 변수는 그 해당 파일 안에서만 접근 가능.

즉 정적 변수가 어디에서 선언되었는 곳 안에서는 접근이 가능한다

-주소를 받는다면 어디에서나 접근가능, 주소의 특성!!!*/

포인터가 가르키는 주소를 delete해도 포인터가 가르키는 주소는 동일

relase함수에서 해당 주소를 제거한후 갖고있는 포인터
nullptr로 바꾸기 위해선 참조 필요

두 static 함수에서 참조할수 있는 변수는 static변수이다

class CCore
	{
	private:
		static CCore* g_pInst;
	public:
	
		static CCore*GetInstance()
		{
			if(nullptr==g_pInst)
			 g_pInst=new CCore;
			return g_pInst;
		}
		static void Release()
		{
			if (nullptr != g_pInst)
			{
				delete g_pInst;
				g_pInst = nullptr;
		}	
                 }

두 번째 방법

(그냥 코어를 데이터 영역에 두고 쓴다. 릴리즈를 따로 하지 않음)
정적 변수를 생성하고 그것의 주소를 반환

class CCore
	{
	private:
		static CCore* g_pInst;
	public:
	
		static CCore*GetInstance()
		{
			static CCore core;
			return &core;
		}
			
                 };
profile
복습을 위한 핵심 내용 및 모작
post-custom-banner

0개의 댓글