> 백엔드 개발 > C++ > 본문

C 11에서 \'auto\'는 언제 값과 참조를 추론합니까?

Patricia Arquette
풀어 주다: 2024-11-03 08:40:03
원래의
756명이 탐색했습니다.

When Does

C 11 "auto" 의미

C 11에서 "auto" 키워드를 사용하면 컴파일러가 자동으로 유형을 추론할 수 있습니다. 변하기 쉬운. "auto"가 값 또는 참조 유형이 될지 여부를 결정할 때 이 추론에 대한 규칙을 이해하는 것이 중요합니다.

값 및 참조에 대한 유형 추론

기본 유형 추론을 관리하는 원칙은 "auto" 유형이 선언된 방식에 따라 결정된다는 것입니다. 예:

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
로그인 후 복사

위의 예에서 "a1"은 정수 값으로 추론되고, "a2"는 정수 참조로 추론됩니다.

1. 참조 반환:

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
로그인 후 복사

이 경우 "get_foo()"는 const 참조를 반환하므로 "auto"는 참조 유형을 추론합니다.

2. 정적 포인터:

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
로그인 후 복사

여기서 "s_foo"는 참조가 아닌 정적 포인터이기 때문에 "auto"는 값 유형을 추론합니다.

3. 포인터 컨테이너 반복:

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
로그인 후 복사

이 루프에서 "auto"는 "foo"가 Foo에 대한 공유 포인터로 추론되도록 합니다. 각 반복은 포인터의 값 복사본을 생성합니다.

결론

요약하자면 C 11의 "auto"에 대한 유형 추론 규칙은 간단합니다. 초기화 표현식이 값인 경우 "auto"는 값 유형을 추론합니다. 초기화 식이 참조인 경우 "auto"는 참조 유형을 추론합니다. "auto"를 효과적으로 사용하고 예상치 못한 동작을 방지하려면 이러한 규칙을 이해하는 것이 중요합니다.

위 내용은 C 11에서 \'auto\'는 언제 값과 참조를 추론합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿