따라서 C++ 표준에서는 생성자의 이니셜 라이저 목록에서 언급 한 순서가 아니라 클래스에서 선언 된 순서대로 클래스 멤버를 초기화해야합니다. 그러나 이것은 초기화에 대한 논증이 평가되는 순서와 관련이 없습니다. 전 주변에서 직렬화 객체에 대한 참조를 자주 전달하는 시스템과 함께 작업하고 있는데, 비트가 객체의 필드에 쓰여지는 순서와 관계없이 비트가 올바른 순서로 읽혀질 수 있는지 궁금합니다.초기화 목록 * 인수 * 평가 순서
struct Foo {
int a;
double b;
// I want to be able to do this
Foo(SerObj &s)
: b(s.readDouble()), a(s.readInt())
{ }
// Rather than this
Foo (SerObj &s)
{
b = s.readDouble();
a = s.readInt();
}
};
은 물론, 선언 ints
및 doubles
같은 재정렬 일들이 너무 큰 문제가 아니라,하지만 때로는 동적 할당을 필요로하는 물체와 일이 될 수 있습니다.
나는 처음에는 주문이 다르다는 것을 알았다. hehe :) –