static 변수를 바로 노출시키지 말고, singleton 패턴으로 감싸는 건 어떨까요?
음..이뜻은 무엇인지..
제가 궁금해서요.
아래처럼 코딩 하면 되나요?..
class A
{
static int a;
};
class singleton_A
{
A *_pa;
public:
A * instance_A()
{
if(pa == NULL)
{
_pa = new A;
int A::a = 0; //?? 맞나요?
}
return _pa;
}
singleton_A() : _pa(NULL) {}
};
위의것이 맞나요?..
뭔가 이상이 있는것 같은데..
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
static으로 선언한 자체로 한 번만 초기화되는데요.다른 특별한 일
static으로 선언한 자체로 한 번만 초기화되는데요.
다른 특별한 일을 하고 싶으신 건지요?
[code:1]class A {public:
스태틱 변수는 위의 경우처럼 explicit하게 초기화를 해야합니다. 선언자체로 초기화되지 않습니다.
Life rushes on, we are distracted
[quote="yielding"]스태틱 변수는 위의 경우처럼 explic
물론입니다. "static으로 선언한 멤버를 적절하게 정의했다고 가정할 때"
한 번만 초기화된다는 뜻이었습니다.
static 변수를 바로 노출시키지 말고, singleton 패턴으로 감
static 변수를 바로 노출시키지 말고, singleton 패턴으로 감싸는 건 어떨까요?
[quote="cdpark"]static 변수를 바로 노출시키지 말고,
음..이뜻은 무엇인지..
제가 궁금해서요.
아래처럼 코딩 하면 되나요?..
위의것이 맞나요?..
뭔가 이상이 있는것 같은데..
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
위의 코드는 한단계 더 거쳐서 singleton 을 쓰는데,저는 대략
위의 코드는 한단계 더 거쳐서 singleton 을 쓰는데,
저는 대략 다음과 같은 싱글톤을 씁니다.
테스트 코드를 보시면 아시겠지만,
인스턴스는 하나밖에 만들어지지 않습니다.
data 는 private 으로 보호되고요.
삽질의 대마왕...
delete(single)은 꽤 위험해보이는군요.만약 다른 곳에서
delete(single)은 꽤 위험해보이는군요.
만약 다른 곳에서 singleton 패턴을 쓰고 있다거나, 삭제 후에 다시 singleton 패턴을 호출할 일이 생기면...
그러면 소멸자에서 해제 해야되나요?..
그러면 소멸자에서 해제 해야되나요?..
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
...
리소스 해제용 함수를 따로 만드시고 레퍼런스 카운팅을 하셔야 겠죠...
------------------------
http://agbird.egloos.com
테스트 코드라서, 버릇상 main 마지막에서 delete 를 써버렸네요.
테스트 코드라서, 버릇상 main 마지막에서 delete 를 써버렸네요.. singleton 을 해재하지 않는다는 말씀에 동의합니다~
삽질의 대마왕...
말 나온김에 andrei alexsandrescu의 modern c++
말 나온김에 andrei alexsandrescu의 modern c++ design에 소개된 singleton까지 공부한다면 좋겠군요. complete라 말할 수는 없지만 하나를 제대로 안다는게 참 여럽다는걸 확실하게 느끼게 해줍니다.
Life rushes on, we are distracted
댓글 달기