생성자에서 Const 필드 초기화
객체의 수명 동안 불변으로 유지되어야 하는 const 필드가 있는 클래스를 정의할 때 초기화하는 것이 중요합니다. 올바르게요. 다음 시나리오를 고려하십시오.
문제 설명:
Foo 포인터를 입력으로 받아들이고 Foo 포인터에 대한 불변 참조를 유지하는 C 클래스 Bar를 생성하려고 합니다. 일생. 다음 코드는 컴파일에 실패합니다.
<code class="cpp">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
해결책:
생성자에서 const 필드를 올바르게 초기화하려면 초기화 목록을 사용해야 합니다.
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
이름 충돌을 피하기 위해 수신 매개변수의 이름을 _foo로 바꿨습니다.
이 접근 방식을 사용하면 Bar 객체가 생성되자마자 foo 포인터가 초기화되고 이후에 변경 불가능하게 유지됩니다. 수명주기 기간.
위 내용은 C에서 생성자의 `const` 필드를 직접 초기화할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!