> 백엔드 개발 > C++ > C는 기본 생성자의 내장 유형을 암시적으로 초기화합니까?

C는 기본 생성자의 내장 유형을 암시적으로 초기화합니까?

Linda Hamilton
풀어 주다: 2024-12-06 09:55:14
원래의
576명이 탐색했습니다.

Does C   Implicitly Initialize Built-in Types in Default Constructors?

암시적 기본 생성자가 내장 유형을 초기화합니까?

컴파일러에서 생성된 기본 생성자는 클래스 멤버 초기화를 담당하지만 이 규칙은 내장 유형에는 적용되지 않습니다. 암시적 기본 생성자는 내장 유형 멤버를 초기화되지 않은 상태로 둡니다.

그러나 클래스 인스턴스를 초기화하는 대체 메커니즘이 있습니다.

값 초기화

구문 C()는 기본 생성자를 호출하는 것처럼 보일 수 있지만 실제로는 값 초기화를 수행합니다. which:

  • 사용자가 선언한 기본 생성자가 있는 경우에만 트리거합니다.
  • 사용자가 선언한 생성자가 없는 클래스의 경우 기본 생성자를 건너뜁니다.
  • 직접 값 - 내장 유형을 초기화하면 다음과 같은 결과가 발생합니다. 제로 초기화.

예:

class C { public: int x; };
C c; // Compiler-generated default constructor used, x retains garbage
로그인 후 복사

명시적 초기화

명시적() 초기화 내장 유형과 사용자 선언 유형 모두에 대한 값 초기화를 트리거합니다.

C c = C(); // Value initialization used, x is zero-initialized
C *pc = new C(); // Value initialization used, pc->x is zero-initialized
로그인 후 복사

집계 초기화

집계 초기화는 생성자를 포함하지 않고 클래스 인스턴스도 초기화합니다.

C c = {}; // x is zero-initialized
C d{}; // C++11 aggregate initialization, x is zero-initialized
로그인 후 복사

위 내용은 C는 기본 생성자의 내장 유형을 암시적으로 초기화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿