> 백엔드 개발 > C++ > C의 기본 생성자와 소멸자: 언제 '=default'와 '{}'를 사용해야 합니까?

C의 기본 생성자와 소멸자: 언제 '=default'와 '{}'를 사용해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-06 09:14:10
원래의
936명이 탐색했습니다.

Default Constructors and Destructors in C  : When Should I Use

기본 생성자와 소멸자의 "=default"와 "{}"의 차이점

C에서 기본 생성자와 소멸자는 특별합니다. 사용자가 명시적으로 정의하지 않은 경우 컴파일러에서 자동으로 생성되는 멤버 함수입니다. 그러나 특정 시나리오에서는 이러한 기본 동작을 재정의해야 하므로 "=default"와 "{}"가 동일한 기능을 제공하는지에 대한 의문이 제기됩니다.

기본 소멸자

클래스에는 가상 소멸자가 필요하지만 구현은 컴파일러에서 생성된 버전과 동일하므로 "=default" 구문을 사용할 수 있습니다. 이를 통해 컴파일러는 명시적인 정의 없이도 가상 소멸자를 생성합니다. 반면에 빈 정의 "virtual ~Widget() {}"을 사용하면 최소한의 입력으로 동일한 효과를 얻을 수 있습니다.

기본 생성자

소멸자와 달리 "=default의 영향은 "는 "{}"와 크게 다릅니다. "Widget() = default"를 사용하면 컴파일러는 "Widget" 클래스에 대한 기본 생성자를 자동으로 생성합니다. 생성된 이 생성자는 사용자가 정의한 생성자가 없는 것처럼 동작합니다. 결과적으로 C 11 용어에서 클래스를 "사소한 유형"으로 만드는 데 기여합니다.

반대로 "Widget() {}"는 사용자가 제공한 기본 생성자를 생성하여 클래스가 사소한 것으로 간주되는 것을 방지합니다. C 11은 간단한 유형에 제한을 두어 효율적인 초기화를 위해 memcpy와 같은 작업을 허용합니다.

결론

가상 소멸자의 경우 "=default"와 "{}"는 비슷하게 동작합니다. 그러나 기본 생성자의 경우 "=default"는 컴파일러가 제공하는 기본 생성자를 생성하는 반면, "{}"는 사용자가 제공하는 기본 생성자를 생성하므로 잠재적으로 클래스의 사소함에 영향을 미칠 수 있습니다. 기본 생성자에 대한 "=default"와 "{}" 사이의 선택은 원하는 동작과 클래스의 사소함에 대한 의미를 기반으로 해야 합니다.

위 내용은 C의 기본 생성자와 소멸자: 언제 '=default'와 '{}'를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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