-
싱글톤 클래스@ 16. 1 ~ 17. 1/게임프로그래밍의 정석 2013. 5. 6. 21:22
클래스내 함수에서
매겨변수가 this일 경우
예를 들어 void Getinput(this);
일 경우 this 포인터 즉 자기자신의 객체가 들어가게 되는것..??
싱글톤의 목적
1. 전역변수가 지닌 위험을 줄인다.
2. 전역변수와 같이 사용할 수 있게 한다.
class Single{ public: static Single* instance(); static void destroy(); private: Single(); Single(const Single&); ~Single(); static Single* mInstance; };
생성자와 소멸자가 private로 되어있다. 즉 아무도 호출할 수 없게 되어 있다.
복사생성자 조차 안된다. 이래선 사용할 수 없다고 생각하지만,
그걸 대비해서 create와 destroy가 있다. create안에서 생성하고 destroy에서 소멸시킨다. 물론 이상태에선 생성자와 소멸자가 이름만 바꾼것일 뿐일 수 있지만
자세히 보면 절대로 두개를 만들 수 없도록 되어있다.
Single*의 포인터인 mInstance는 static이다. static변수는 세상에 한개뿐..그리고 create안에는 아래처럼 mInstatnce가 new되어 있는지 확인한다.
이렇게..
Single* Single::instance(){ if(!mInstance) { mInstance=new Single; }
return mInstance; }
이런식으로 되어있고..사용할때는..
Single* ptr=Single::instance(); ⁄⁄다른곳에서 인스턴스를 받아서 사용함 Single* Single::mInstance=0; ⁄⁄클래스 외부에서 초기화
인스턴스를 받아서 사용하면 됨..ptr-> 이런식으로...뭐..이렇다...
'@ 16. 1 ~ 17. 1 > 게임프로그래밍의 정석' 카테고리의 다른 글
(챕터 06) 문자를 출력하는 방법 (0) 2014.03.02 (챕터 03) 이미지 파일을 사용하자(2) (0) 2014.03.01 (챕터 03) 이미지 파일을 사용하자 (0) 2013.04.24 (챕터 02) 점에서 시작하는 2D그래픽(2) (0) 2013.04.24 (챕터 02) 점에서 시작하는 2D그래픽(1) (0) 2013.04.23