>  기사  >  백엔드 개발  >  C 생성자에서 상수 포인터 멤버를 초기화하는 방법은 무엇입니까?

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

DDD
DDD원래의
2024-11-04 15:05:09157검색

How to Initialize a Constant Pointer Member in a C   Constructor?

C 생성자에서 상수 포인터 멤버 초기화

C에서 클래스를 사용하여 작업할 때 포인터 멤버는 생성자 내에서 상수로 사용됩니다. 이렇게 하면 객체의 수명 동안 포인터가 불변으로 유지됩니다.

다음 코드 예제를 고려하세요.

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* _foo) {
        foo = _foo;
    }
};</code>

이 코드에서 foo 멤버는 상수 포인터로 표시됩니다. 그러나 상수 멤버에는 허용되지 않는 foo 포인터가 생성자 본문 내에 할당되었기 때문에 컴파일이 실패합니다.

올바른 방법: 초기화 목록에서 초기화

상수 포인터 멤버를 초기화하는 올바른 방법은 생성자 본문 내의 멤버 초기화 목록에서 초기화하는 것입니다. 이는 다음과 같이 달성할 수 있습니다:

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

초기화 프로그램 목록에서 foo를 초기화함으로써 컴파일러는 생성자가 본문에 들어가기 전에 포인터에 해당 값이 할당되도록 합니다. 이는 객체 생성 시 상수 멤버가 초기화되어야 한다는 요구 사항을 충족합니다.

수정된 코드에서는 foo 멤버와의 혼동을 피하기 위해 들어오는 매개 변수 변수의 이름을 _foo로 변경했습니다.

이를 따르면 접근 방식을 사용하면 생성자에서 상수 포인터 멤버를 초기화하여 해당 값이 객체의 수명 주기 전체에서 불변으로 유지되도록 할 수 있습니다.

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

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