>백엔드 개발 >C++ >멤버 초기화 목록과 생성자 할당: 언제 어느 것을 사용해야 합니까?

멤버 초기화 목록과 생성자 할당: 언제 어느 것을 사용해야 합니까?

DDD
DDD원래의
2024-12-23 02:32:37544검색

Member Initializer List vs. Constructor Assignments: When Should You Use Which?

초기화 목록과 생성자 할당: 내부 차이점

클래스 멤버를 초기화할 때 멤버 초기화 목록을 사용하거나 값을 할당하도록 선택할 수 있습니다. 생성자 본문 내에서. 내부적으로 이러한 접근 방식에는 미묘한 차이가 있습니다.

멤버 이니셜라이저 목록

이 예에서 볼 수 있듯이 멤버 이니셜라이저 목록을 사용합니다.

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}

생성자 본문에 들어가기 전에 멤버 변수를 직접 초기화합니다. 이는 특히 다음과 같은 경우에 유용합니다.

  • 상수 멤버 초기화: 이러한 멤버는 생성자 본문이 실행되기 전에 초기화되어야 하며, 멤버 초기화 목록이 그렇게 하는 유일한 방법입니다.
  • 참조 초기화: 참조는 생성자 본문과 멤버 초기화 목록 이전에 초기화되어야 합니다. 선호되는 방법입니다.
  • 기본 클래스 생성자에 매개변수 전달: 매개변수화된 생성자를 사용하여 기본 클래스에서 상속할 때 기본 클래스 멤버는 멤버 초기화 프로그램 목록을 사용하여 초기화되어야 합니다.

생성자 할당

한편, 다음 예와 같이 생성자 본문 내에 값을 할당합니다.

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}

생성자 실행 중에 초기화를 수행합니다. 이 접근 방식은 일반적으로 상수가 아닌 멤버와 생성자의 매개 변수를 기반으로 초기화할 수 있는 멤버에 사용됩니다.

생성된 코드 비교

일반적으로 두 접근 방식 모두 유사한 생성을 생성합니다. 암호. 그러나 상수 멤버 또는 참조의 경우 생성자 할당으로 인해 컴파일 오류가 발생하므로 멤버 초기화 목록만 초기화할 수 있습니다.

위 내용은 멤버 초기화 목록과 생성자 할당: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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