C에서 const 개체를 기본 구성하기 위해 사용자 제공 기본 생성자가 필요한 이유는 무엇입니까?
C 표준에서는 프로그램이 const 한정 유형의 객체에 대한 기본 초기화를 호출하는 경우 기본 클래스 유형은 사용자가 제공한 기본 생성자를 보유해야 합니다. 이 요구 사항은 다음과 같은 사실에서 비롯됩니다.
이러한 문제를 방지하기 위해 표준에서는 POD 유형이 부족한 POD 유형에서 const 객체를 생성할 수 없도록 규정하고 있습니다. 사용자가 제공한 기본 생성자. 이렇게 하면 생성 시 const 객체가 항상 초기화됩니다.
POD 클래스와 비POD 클래스의 구별
명확히 말하자면, 표준 요구 사항은 특히 non-POD 클래스의 const 객체에 적용됩니다. -POD 수업. 가상 함수나 기본 클래스가 없고 그 자체가 POD인 데이터 멤버가 있는 POD 클래스는 사용자 정의 생성자가 없어도 기본 초기화될 수 있습니다. 반면, POD가 아닌 클래스에는 기본 초기화를 활성화하기 위해 사용자가 제공한 기본 생성자가 필요합니다.
설명 예
다음 코드 조각을 고려하세요.
struct B { B(): x(42) {} int doSomeStuff() const { return x; } int x; }; struct A { A() {} // Required by the standard B b; // Illustration purpose }; int main() { const A a; // Valid due to user-provided default constructor in A. }
이 예에서 A 구조체의 const 객체 'a'는 기본 생성될 수 있습니다. POD가 아닌 클래스에 대한 표준 요구 사항을 충족하는 사용자 제공 기본 생성자가 있습니다.
위 내용은 'const' 객체를 기본 구성하기 위해 C 클래스에 사용자 정의 기본 생성자가 있어야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!