Language/C++

[C++] Singleton 패턴을 사용하는 간단한 예제

마탁이 2021. 3. 2. 18:33

코드를 구현하다보니 생각지 못하게 프로세스 내부에서 데이터 공유가 많이 발생하였고

singleton으로 수정해야 되는 부분이 있어, 샘플 코드를 작성하였다.

 

- singleton.h

#pragma once
#include <iostream>

class Singleton
{
private:
	static Singleton* pInstance; 

	Singleton() { num = 0; };
	~Singleton() {};

private:
	int num;

public:
	static Singleton* getInstance()
	{
		if (pInstance == nullptr)
		{
			pInstance = new Singleton;
		}
		return pInstance;
	}

	void SetNum(int val)
	{
		num = val;
	}

	int GetNum()
	{
		return num;
	}
};

Singleton* Singleton::pInstance = nullptr;

 

- testClass.h

#include "Singleton.h"

class Singleton;

class TestClass
{
public:
	TestClass() {
		single = Singleton::getInstance();
	};
	~TestClass() {};


	void print()
	{
		int a = single->GetNum();
		std::cout << a << std::endl;
	}

private:
	Singleton* single;
};

 

- main.cpp

#include <iostream>
#include "Singleton.h"
#include "TestClass.h"

int main()
{
	Singleton* a = Singleton::getInstance();
	Singleton* b = Singleton::getInstance();


	a->SetNum(1);


	std::cout << b->GetNum() << "\n";

	TestClass tes;
	tes.print();
	

	return 0;
}

 

'Language > C++' 카테고리의 다른 글

[C++] Utf8 코드를 한글로 출력하기  (0) 2021.05.24
[C++] UTF-8 가 ~ 힣 출력 확인 코드  (0) 2021.04.23
[C++][공통] 기본적인 개념  (0) 2020.12.15
[C++] 포인터, 더블 포인터 사용  (0) 2020.12.15
[C++] 헤더 파일  (0) 2020.12.15