은 어디 선가 그 때 나는 이후리팩터링 중 struct safe의 집계 초기화가 있습니까? 내가 구조체</p> <pre><code>SomeStruct { double y; double x; }; </code></pre> <p>하고있는 경우
SomeStruct
{
double x;
double y;
double z;
};
내 구조체의 순서를 변경하면 내 코드가 자동으로 중단 할 수있는 것 같은
SomeStruct s{1,2}; //y=1 x=2
초기화 현재 SomeStruct s{1,2}
은 x = 1, y = 2, z = 0을 의미합니다.
편집 : 인수가 생성 된 것은 생성자가 동일한 문제를 가지고 있다는 것입니다.하지만 근본적으로 인수 이름과 주문을 볼 수 있습니다. 현대 IDE를 사용하는 경우 더욱 분명합니다.
아무도이 언급을 보지 못했지만 데이터 레이아웃을 변경하지 않는다고 확신하는 경우 안전하게 초기화를 사용할 수 있습니다. 그것은 희귀 한 상황이 될 것입니다. 그래서 "무질서한 구조체에 집계 초기화를 사용하지 마십시오"라는 무언의 규칙이 있습니까?
생성자에는 실제로 동일한 문제가 있습니다. 이것은 초기화보다는 유형에 관한 문제입니다. –
그러나 생성자에 새 객체를 추가하면 새 객체가없는 경우 코드가 컴파일되지 않습니다. 문제는 코드가 컴파일되고 아무도 오류가 있음을 인식하지 못합니다. – Ventu
@Ventu : 그렇습니다.하지만 같은 유형의 필드를 재정렬하거나 생성자 매개 변수의 순서를 바꾸면 조용한 변경 사항을 적용 할 수 있습니다. –