>백엔드 개발 >C++ >C 생성자에서 Const 멤버 변수를 초기화하는 방법은 무엇입니까?

C 생성자에서 Const 멤버 변수를 초기화하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 02:54:03335검색

How to Initialize a Const Member Variable in a C   Constructor?

생성자에서 불변 필드를 초기화하는 방법: 심층 탐구

C에서는 다음과 같은 시나리오가 발생할 수 있습니다. 생성자 내에 변경할 수 없는 필드가 필요한 클래스를 생성하려고 합니다. 이러한 경우 필드의 불변성을 보장하는 것이 중요합니다. 이 기사에서는 이 목표를 달성하기 위한 적절한 접근 방식에 대해 자세히 알아볼 것입니다.

Foo 클래스가 데이터 구조 역할을 하고 Bar 클래스가 생성 중에 Foo 포인터를 인수로 요구하는 Foo 주위의 래퍼인 시나리오를 생각해 보세요. 우리의 목표는 Bar 인스턴스의 수명 동안 이 포인터가 변경되지 않도록 보장하는 것입니다.

Bar 생성자 내에서 const 포인터 foo를 초기화하려는 시도는 다음과 유사할 수 있습니다.

<code class="cpp">class Foo;

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

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

그러나 , 이 접근 방식은 컴파일 오류를 유발합니다. 이를 수정하고 Bar 인스턴스 내에서 foo의 불변성을 설정하려면 초기화 목록을 사용해야 합니다.

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

이 수정된 버전에서 생성자는 Foo 포인터를 인수로 가져와 멤버에 할당합니다. 초기화 목록을 사용하여 변수 foo를 사용하고 멤버 변수와의 잠재적인 혼동을 피하기 위해 들어오는 변수의 이름을 바꿉니다.

이 기술을 사용하면 Bar 구성 시 foo 포인터가 즉시 초기화되어 Bar의 나머지 부분에 대해 불변으로 렌더링됩니다. 인스턴스의 수명

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

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