객체 데이터가 C ++ 생성자에서 잘못된 순서로 초기화되면 어떤 종류의 버그가 발생할 수 있습니까?

Kwogggg

Scott Meyers의 책인 Effective C ++를 읽고 있습니다. 생성자의 경우 특정 순서로 개체 데이터를 초기화 할 것을 권장합니다.

  • 파생 클래스 앞의 기본 클래스
  • 클래스 내에서 선언 된 순서대로 초기화 된 데이터 멤버.

이 규칙을 겉으로보기에 따르지 않으면 모호한 행동 버그가 발생할 수 있습니다 . 그러나 그는 어떠한 예도 제시하거나 세부 사항을 설명하지 않습니다.

어떤 종류의 버그가 발생할 수 있는지 예를 들어 줄 수 있습니까?

자로드 42

예를 들면

struct S
{
   int a;
   int b;

   S() : b(42), a(b + 1) {}
};

정의되지 않은 동작으로 이어집니다.

생성자에서 예상 할 수있는 것과는 반대로 (멤버 순서에 따라) a전에 초기화 b됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관