>백엔드 개발 >C++ >C 11의 'auto' 키워드가 남용되고 있습니까? 명시적 입력을 언제 피해야 합니까?

C 11의 'auto' 키워드가 남용되고 있습니까? 명시적 입력을 언제 피해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 20:11:10409검색

Is C  11's `auto` Keyword Overused: When Should You Avoid Explicit Typing?

C 11의 Auto 키워드는 과잉인가요?

auto 키워드는 디자이너의 의도대로 복잡한 템플릿 유형을 처리하는 데 매우 귀중한 것으로 입증되었지만, 더 간단한 시나리오에서 과도하게 사용하는 것에 대한 우려가 발생합니다. std::make_shared()와 같은 간단한 표현식의 경우에도 유형을 명시적으로 기술하는 것을 피하기 위해 auto를 사용해야 합니까?

사용 목적 및 실제 지침

에 따르면 C 표준 위원회에서는 유형을 명시적으로 언급하기 어렵지만 오른쪽 유형이 분명할 경우 auto를 사용해야 합니다. 예를 들어 다음 코드를 고려해보세요.

my_multi_type::nth_index<2>::type::key_type::composite_key_type::
    key_extractor_tuple::tail_type::head_type::result_type

boost::multi_index에서 복합 키 유형을 검색하려면 이 복잡한 식이 필요합니다. 유형이 int인 것으로 알려져 있더라도 이러한 경우 가독성을 높이기 위해 auto를 사용해야 합니다.

권장 사용 사례

다음과 같은 경우에 auto를 사용하세요.

  • auto로 표시되는 유형을 독자는 쉽게 유추할 수 있습니다.
  • 유형은 다음과 같습니다.
  • 가독성을 높이고 불필요한 반복을 방지합니다.

  • auto 사용 std::make_shared() 유형이 다음과 같기 때문에 적절합니다.
  • bla()가 shared_ptr를 반환하는 표현식 bla()에서 foo의 유형이 불확실하므로 auto를 사용하는 것은 불분명합니다.
  • 여기서 루프에서 auto를 사용하는 것은 반복자 유형은 알려져 있지만 auto it = v.begin();과 같은 특정 반복자는 알려져 있지 않으며 코드를 향상시킬 수 있습니다. 명확성.

주의 사항

  • 문서화 및 온전성 검사에 도움이 되는 유형을 명시적으로 지정합니다.
  • 자동을 사용할 때는 주의하세요. 부호 없는 변수가 있는 for 루프는 예상치 못한 결과를 초래할 수 있습니다. 오류가 발생했습니다.

위 내용은 C 11의 'auto' 키워드가 남용되고 있습니까? 명시적 입력을 언제 피해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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