나는 다음과 같은 코드가 있습니다C++ 정적 멤버
void Foo() {
static std::vector<int>(3);
// Vector object is constructed every function call
// The destructor of the static vector is invoked at
// this point (the debugger shows so)
// <-------------------
int a;
}
그럼 어딘가에는 벡터 오브젝트는 모든 Foo()
전화에 건설됩니다 않는 이유는 일련의
에 Foo
여러 번 전화를 왜이다 소멸자가 static ...
선언 직후에 호출 되었습니까?
업데이트 :이 기능을 구현하기 위해 노력했다
번 메커니즘을 호출하고 내가 생각하는 CallOnce
이 클래스 이름이 아주 좋은 것입니다
static core::CallOnce(parameters)
같은 것을 쓰고.
제 생각에는 static core::CallOnce call_once(parameters)
이 더 나빠 보이지만 괜찮습니다. 이걸로는 아무 것도 할 수 없습니다.
감사합니다.
왜 이것이 순간적으로 다운 voted됩니까? –
@ 마이클 : 좋은 질문입니다. 누구든지 위선적 인 코멘트를 남기지 않고 하향 투표를 계속해야합니다! 그것은 그들이 무엇을위한 것입니까! (오, +1) –
@ 제임스 기회가 있는지 아십니까? 왜 이런 일이 발생합니까? 생성자에서 일부 작업을하는 이름없는 객체를 "일반"정적 변수로 만들지 않고 생성 된 객체를 파괴하지 않는 이유는 무엇입니까? –