고려 :함수가 생성자의 이니셜 라이저 목록에서 시퀀스를 호출합니까?
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
에 대한 두 번의 호출은 순서가 지정되지 않았습니다.
그럼 t.a == 0
과 t.b == 1
이 보장되는지 궁금합니다.
@ FrançoisAndrieux 나는 그것이 중복이라고 생각하지 않습니다. 이 질문은 특히 회원 초기화 목록에서 함수 호출의 순서를 다루고 있습니다.이 목록은 해당 질문이 다루지 않는 것입니다. – Xirema
@ FrançoisAndrieux - 그것은 멍청이라고 생각하지 마십시오. OP는'a'가'b' 전에 초기화된다는 것을 압니다. 그러나'f()'에 대한 두 번의 호출이 순서인지 아닌지 묻습니다. 'a' 나'b'가 초기화되기 전에'f()'가 두 번 호출 될 수 있습니다. –
확인이 필요하지만 믿을 수 있습니다. –