c, git, 컴퓨터/c++
Singleton
컴맹학자
2022. 10. 24. 22:25
728x90
사용이유
단 하나의 class(객체)를 사용 해야 할 때 사용
※ 관리 객체, 시스템 등
특징
1. 프로젝트에서 유일한 Only One 객체 (2개이상 존재 할 수 없음)
2. 다른 클래스에서 해당 객체를 접근 할시 특정한 방법으로만 접근 가능
3. 디자인 패턴 중 하나
사용 예제
Singleton.cpp
더보기
#include "stdafx.h"
#include "Singleton.h"
Singleton* Singleton::instance = nullptr;
Singleton::Singleton()
{
cout << "생성" << endl;
}
Singleton::~Singleton()
{
cout << "소멸" << endl;
}
void Singleton::Create()
{
if (instance == nullptr)
instance = new Singleton();
else
TextColor("경고. 값이 존재함", EColorType::Red);
}
void Singleton::Delete()
{
SAFE_DELETE(instance);
}
void Singleton::In()
{
cout << "In 호출" << endl;
}
void Singleton::Out()
{
cout << "Out 호출" << endl;
}
Singleton.h
더보기
#pragma once
class Singleton
{
private:
Singleton();
~Singleton();
public:
static void Create();
static void Delete();
static Singleton* Get() { return instance; }
public:
void In();
void Out();
private:
static Singleton* instance;
};
Main.cpp
2개의 Create 함수를 사용 하게 되면 아래 이미지 처럼 빨강색 경고가 나옴
핵심
싱글톤을 만들때 생성자와 소멸자를 private: 영역에서 선언을 해서 외부에서 접근을 못하게 막아둠
싱글톤을 만들 때는 외부에서 접근 할 수 있도록 instance를 cpp 내에 이미지 처럼 선언
외부에서 접근을 못하기 때문에 싱글톤을 만들때 오로지 Create() 함수를 통해서 만들지만 조건을 보면 한번만 접근이 가능 하고 2번째 부터는 else로 빠지는 형태
외부에서 해당 객체를 사용 할려면 헤더 파일에 선언한 Get() 함수를 통해서만 접근이 가능