수색…


소개

C ++가 어떻게 잘못 될 수 있는지에 대한 더 많은 예제.

정의되지 않은 동작 에서 계속

이니셜 라이저 목록의 비 정적 멤버 참조하기

생성자가 실행되기 전에 이니셜 라이저 목록의 비 정적 멤버를 참조하면 정의되지 않은 동작이 발생할 수 있습니다. 이 시점에서 모든 구성원이 구성되지 않았기 때문에이 결과가 나타납니다. 표준 초안에서 :

§12.7.1 : 생성자가 실행을 시작하기 전에 객체의 비 정적 멤버 또는 기본 클래스를 참조하여 중요하지 않은 생성자가있는 객체의 경우 정의되지 않은 동작이 발생합니다.

struct W { int j; };
struct X : public virtual W { };
struct Y {
   int *p;
   X x;
   Y() : p(&x.j) { // undefined, x is not yet constructed
   }
};


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow