자바나 파이썬과 같은 모던 랭귀지들은
싱글톤 키워드만 사용하면 쉽게 싱글톤 패턴을 구현할 수 있다
하지만 C++에서는 싱글톤을 만들기 위해 조금 복잡하게 구현해주어야 한다
싱글톤은
단 하나의 오브젝트만 만들어서 사용하는 경우에 이용한다
싱글톤을 구현할 때,
오브젝트는 힙에 할당하고
포인터를 데이터 공간에 선언해 놓고
해당 포인터를 반환해서 사용하는 싱글톤 형태의 문제점은
해당 포인터에 nullptr를 넣거나
해당 포인터를 free를 통해 해제한다면 문제가 발생한다
따라서,
데이터 공간에 오브젝트를 생성하고
레퍼런스로 가져와서 사용하는 것이 가장 안전하다
#include <iostream>
class Singleton
{
public:
static Singleton& getInstance()
{
static Singleton so;
return so;
}
Singleton(){};
Singleton(const Singleton&) = delete;// copy constuctor 막기
Singleton& operator=(const Singleton&) = delete;// copy assignment 막기
// 필요한 멤버 함수...
void print();
private:
//static Singleton so;
// static 멤버변수를 static 함수안에 넣으면, 굳이 외부에서 초기화 불필요
// 필요한 멤버 변수...
int a;
};
//Singleton Singleton::so;
int main()
{
Singleton& s = Singleton::getInstance();
}
'C++ > [노코프] Tips' 카테고리의 다른 글
[C++ Tips] Early Return (0) | 2024.04.08 |
---|---|
[C++ Tips] Function Overloading (0) | 2024.04.08 |
[C++ Tips] static (0) | 2024.04.07 |
[C++ Tips] extern vs. static (0) | 2024.04.07 |
[C++ Tips] std::string (0) | 2024.04.06 |