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 중국어 웹사이트의 기타 관련 기사를 참조하세요!