멤버 이니셜라이저 목록의 초기화 순서
C에서 생성자는 종종 멤버 이니셜라이저 목록을 사용하여 멤버 변수를 초기화합니다. 그러나 이러한 변수가 초기화되는 순서는 혼란스러울 수 있습니다.
다음 생성자를 고려하세요.
class A { public: OtherClass a_; AnotherClass b_; A(OtherClass o, string x, int y) : a_(o) , b_(a_, x, y) {} };
문제:
원래는 변수는 초기화 목록에 나열된 순서대로 초기화되었다고 가정합니다: a_ 먼저, 그 다음 b_. 그런데 변수가 역순으로 초기화되고 있는 것이 밝혀지면서 문제가 발생했습니다.
질문:
이를 보장하기 위해 초기화 순서를 어떻게 제어할 수 있습니까? a_는 이전에 초기화되었습니다. b_?
답변:
초기화 순서는 클래스의 데이터 멤버 선언 순서에 따라 다릅니다. 이 예에서는 a_가 b_보다 먼저 선언되었으므로 먼저 초기화됩니다.
따라서 원하는 초기화 순서를 보장하려면 클래스 정의 내에서 데이터 멤버를 올바른 순서로 선언하는 것이 중요합니다.
위 내용은 C 멤버 이니셜라이저 목록에서 초기화 순서를 보장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!