고려 : int f() {
static int i = 0;
return i++;
}
struct Test {
int a, b;
Test() : a(f()), b(f()) {}
};
Test t;
나는 a 인해 struct에서의 선언의 순서에 b 전에 초기화되는 것을 알고있다. g(f(), f())에있는 f에
section 10.13 of the C++ FAQ Lite에 설명 된 정적 초기화 실패를 피하는 간단하고 잘 알려진 패턴이 있습니다. 이 표준 패턴에서는 생성 된 객체가 절대로 파괴되지 않습니다 (소멸자가 중요한 부작용이없는 경우에는 문제가되지 않음) 또는 정적 객체가 안전하게 액세스 할 수 없다는 점에서 트레이드 오프가 있습니다 다른 정적 객체의 소멸자
초기화 순서 : 각 개체가 초기화 좀 더 가지 내부에 있기 때문에, 그때 Initializer.init
및 전화, 처음에 너무 abstract class SuperClass (cs: Seq[C]) {
def init {}
}
object A extends SuperClass(Seq(B, C))
object B extends SuperCl