>백엔드 개발 >C++ >C의 기본 생성자는 내장 유형 멤버를 초기화합니까?

C의 기본 생성자는 내장 유형 멤버를 초기화합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-14 03:34:09731검색

Does C  's Default Constructor Initialize Built-in Type Members?

내장 유형의 기본 생성자 동작

질문:

컴파일러에서 자동으로 생성되는 기본 생성자를 수행하세요. C에서 내장 유형 초기화 ?

답변:

아니요, 기본 생성자(사용자 정의 생성자가 없는 클래스에 대해 컴파일러에서 생성됨)는 내장 유형의 멤버를 초기화하지 않습니다.

그러나 기본값을 포함하지 않는 클래스 인스턴스 초기화를 위한 다른 메커니즘이 있다는 점에 유의하는 것이 중요합니다. 생성자:

  • 값 초기화: C() 구문(사용자가 선언한 생성자를 사용할 수 없는 경우)은 내장 유형을 0으로 초기화하는 값 초기화를 수행합니다.
  • 집계 초기화: 구문 C {} 또는 C{}; 생성자를 호출하지 않고 클래스의 모든 멤버를 초기화합니다.

예:

다음 클래스를 고려하세요.

class C {
public:
  int x;
};

컴파일러 - C에 제공된 기본 생성자는 초기화되지 않습니다. C::x.

C c; // Compiler-provided default constructor is used
// c.x contains garbage

반대로 값 초기화 또는 집계 초기화를 사용하면 C::x:

C c = C(); // Uses value-initialization instead of default constructor
            // c.x == 0

C d{}; // Aggregate initialization
       // d.x == 0
가 0으로 초기화됩니다.

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

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