초기화자 목록과 생성자 본문: 차이점 이해
C에서 생성자 내의 멤버 변수 초기화는 이니셜라이저 목록 중 하나를 사용하여 수행할 수 있습니다. 또는 생성자 본문 내에서. 처음에는 동일한 결과를 얻는 것처럼 보일 수 있지만 고려해야 할 몇 가지 미묘한 차이점이 있습니다.
초기화 프로그램 목록:
public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}
초기화 프로그램 목록은 쉼표- 생성자 매개변수 목록 다음에 오는 멤버 이니셜라이저의 분리된 목록입니다. 각 이니셜라이저는 해당 멤버 변수에 값을 할당합니다. 이 구문을 사용하면 생성자 본문이 실행되기 전에 멤버 변수가 초기화됩니다.
생성자 본문:
public : Thing(int _foo, int _bar){ member1 = _foo; member2 = _bar; }
생성자 본문 내에서 멤버 변수는 할당 문을 사용하여 초기화됩니다. . 이 구문을 사용하면 생성자 매개변수가 설정된 후 더 복잡한 초기화 논리를 사용할 수 있습니다.
주요 차이점:
기본 매개변수:
두 방법 모두 기본 매개변수를 동일한 방식으로 처리합니다. 생성자 선언에 기본 매개변수가 지정된 경우 생성자에 전달된 누락된 인수에 대해 이 매개변수가 사용됩니다.
결론:
두 접근 방식 모두 멤버 변수를 초기화할 수 있지만 생성자 내에서 초기화 목록은 일반적으로 적절한 초기화 순서를 보장하고 컴파일 오류를 방지하기 위해 POD가 아닌 유형에 대해 선호됩니다. 생성자 본문은 생성자 매개변수가 설정된 후 추가 코드가 필요한 보다 복잡한 초기화 논리에 유용합니다.
위 내용은 초기화 목록 또는 생성자 본문: 언제 C에서 which를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!