>백엔드 개발 >C++ >C 생성자에서 const 멤버 변수를 어떻게 초기화합니까?

C 생성자에서 const 멤버 변수를 어떻게 초기화합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 02:58:29995검색

How do you initialize a const member variable in a C   constructor?

생성자 초기화로 불변 클래스 속성 유지

C에서 생성자는 객체의 초기 상태를 설정하는 데 중요한 역할을 합니다. 때때로 특정 클래스 속성이 인스턴스 수명 동안 변경되지 않은 상태로 유지되어야 하는 상황에 직면합니다. 일반적인 시나리오 중 하나는 객체 생성 중에 상수 포인터를 할당하는 것입니다.

다음 코드 조각을 고려하세요.

<code class="C++">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo;
    }
};

class Foo {
public:
  int a;
};</code>

여기서의 의도는 수정 불가능한 포인터를 사용하여 Bar 객체를 생성하는 것입니다. Foo 인스턴스에. 그러나 컴파일할 때 오류가 발생합니다. 이는 클래스 생성자 내에서 "this" 포인터에 직접 액세스할 수 없기 때문입니다.

이 문제를 해결하려면 다음 구문을 사용하여 생성자의 초기화 목록에서 상수 필드를 초기화해야 합니다.

<code class="C++">Bar(Foo* _foo) : foo(_foo) {
}</code>

이 업데이트된 코드에서는 인스턴스 멤버와의 혼동을 피하기 위해 수신 매개변수의 이름을 바꿉니다. 초기화 목록 내에서 _foo 인수의 값을 foo 상수 멤버에 명시적으로 할당합니다.

이 기술을 사용하여 객체 생성 중에 foo 포인터를 const 값으로 효과적으로 설정하여 전체 개체의 불변성을 보장합니다. Bar 인스턴스의 수명.

위 내용은 C 생성자에서 const 멤버 변수를 어떻게 초기화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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