반응형
생성자 초기화 목록 평가 순서
인수를 취하는 생성자가 있습니다. 나는 그것들이 나열된 순서대로 구성되었다고 가정했지만, 어떤 경우에는 반대로 구성되어 중단을 초래 한 것으로 보입니다. 인수를 되 돌리면 프로그램 중단이 중단되었습니다. 이것은 내가 사용하는 구문의 예입니다. 문제는이 경우 a_를 b_ 전에 초기화해야한다는 것입니다. 건설 순서를 보장 할 수 있습니까?
예 :
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};
클래스의 멤버 변수 선언 순서에 따라 다릅니다. 그래서 a_
다음, 첫 번째가 될 것입니다 b_
귀하의 예제에서 두 번째로 하나가 될 것입니다.
설명을 위해 표준을 인용하려면 :
12.6.2.5
초기화는 다음 순서로 진행됩니다.
...
- 그런 다음 비 정적 데이터 멤버는 클래스 정의에서 선언 된 순서대로 초기화됩니다 (다시 mem-initializer의 순서에 관계없이).
...
이에 대한 표준 참조 는 이제 12.6.2 섹션 13.3으로 보입니다.
(13.3) — 그런 다음 정적이 아닌 데이터 멤버는 클래스 정의에서 선언 된 순서대로 초기화됩니다 (다시 mem-initializer의 순서에 관계없이).
참고 URL : https://stackoverflow.com/questions/1242830/constructor-initialization-list-evaluation-order
반응형
'Programing' 카테고리의 다른 글
고정 / 고정 된 왼쪽 열과 스크롤 가능한 본문이있는 HTML 테이블을 어떻게 만듭니 까? (0) | 2020.04.09 |
---|---|
Java 시스템 특성 및 환경 변수 (0) | 2020.04.09 |
파이썬에서 목록을 회전시키는 효율적인 방법 (0) | 2020.04.09 |
Java 8 메소드 참조 : 매개 변수화 된 결과를 제공 할 수있는 공급 업체 제공 (0) | 2020.04.09 |
Java에서 XML을 파일 대신 문자열로 구문 분석하는 방법은 무엇입니까? (0) | 2020.04.09 |