>백엔드 개발 >C++ >초기화 목록 또는 생성자 본문: 언제 C에서 which를 사용해야 합니까?

초기화 목록 또는 생성자 본문: 언제 C에서 which를 사용해야 합니까?

DDD
DDD원래의
2024-12-06 03:22:14634검색

Initializer List or Constructor Body: When Should You Use Which in C  ?

초기화자 목록과 생성자 본문: 차이점 이해

C에서 생성자 내의 멤버 변수 초기화는 이니셜라이저 목록 중 하나를 사용하여 수행할 수 있습니다. 또는 생성자 본문 내에서. 처음에는 동일한 결과를 얻는 것처럼 보일 수 있지만 고려해야 할 몇 가지 미묘한 차이점이 있습니다.

초기화 프로그램 목록:

public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}

초기화 프로그램 목록은 쉼표- 생성자 매개변수 목록 다음에 오는 멤버 이니셜라이저의 분리된 목록입니다. 각 이니셜라이저는 해당 멤버 변수에 값을 할당합니다. 이 구문을 사용하면 생성자 본문이 실행되기 전에 멤버 변수가 초기화됩니다.

생성자 본문:

public : Thing(int _foo, int _bar){
    member1 = _foo;
    member2 = _bar;
}

생성자 본문 내에서 멤버 변수는 할당 문을 사용하여 초기화됩니다. . 이 구문을 사용하면 생성자 매개변수가 설정된 후 더 복잡한 초기화 논리를 사용할 수 있습니다.

주요 차이점:

  • 초기화 순서: 초기화 목록, 멤버는 생성자 본문이 실행되기 전에 초기화되는 반면, 생성자 본문에서는 멤버가 본문 후에 초기화됩니다.
  • 기본 구성: 멤버 변수가 POD(Plain Old Data) 유형이 아니고 기본 생성자가 없는 경우 생성자 본문 접근 방식이 컴파일되지 않습니다. 초기화 목록은 기본 생성자가 생성자 본문보다 먼저 호출되도록 보장합니다.

기본 매개변수:

두 방법 모두 기본 매개변수를 동일한 방식으로 처리합니다. 생성자 선언에 기본 매개변수가 지정된 경우 생성자에 전달된 누락된 인수에 대해 이 매개변수가 사용됩니다.

결론:

두 접근 방식 모두 멤버 변수를 초기화할 수 있지만 생성자 내에서 초기화 목록은 일반적으로 적절한 초기화 순서를 보장하고 컴파일 오류를 방지하기 위해 POD가 아닌 유형에 대해 선호됩니다. 생성자 본문은 생성자 매개변수가 설정된 후 추가 코드가 필요한 보다 복잡한 초기화 논리에 유용합니다.

위 내용은 초기화 목록 또는 생성자 본문: 언제 C에서 which를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.