[C++ 공부] auto를 사용한 자동 타입 추정

Yujin Lee·2022년 2월 18일
0

Cpp_Study

목록 보기
2/8
post-thumbnail

1. auto 키워드를 사용한 자동 타입 추론

SW 개발 인턴 생활을 하면서, 자료형 때문에 변수 선언에 빨간 줄 생길 때
아.. 걍 auto써볼까 하고 빨간 줄 없앴던 적이 있다.

여러 C++ 프로그래머 사이에서는 auto의 사용으로 인해 코드의 가독성이 나빠진다는 평이 있었나보다. 하지만 쓰는 입장에선 너무 편해 !

auto auto& 심지어 auto&& 까지,,, 이게 다 뭔지 이제서야 제대로 정리해본다..


1.1 auto

함수 서명에 auto를 사용하면 헤더 파일을 찾아볼 때 가독성을 크게 증가시킨다.
auto를 활용하면 변수에 올바른 타입을 사용하는데 도움이 된다.
변수를 어떻게 사용하고자 하는지 표현해주는 정도이다.

1.2 const auto& (const 참조)

어느 것과도 바인드가 가능하다.
const니까 생성된 변수는 항상 불변이다. 즉, 수정을 원하지 않는 변수에 대해 사용할 때 써야한다.
저자는 가능하면 const auto&를 항상 사용할 것을 권하고 있다.

1.3 auto& (가변 참조)

const가 빠진 auto&는 가변 참조(mutable reference)이다.
객체 참조를 변경하고자 하는 경우에만 사용한다.

1.4 auto&& (전달 참조)

엥 이건 뭐지ㅋㅋ 싶었다. forwarding reference라고 한댄다.
어떤 것과도 바인드할 수 있다. 또한, 임시 객체를 포함한 해당 객체 참조를 변경할 수 있게 하므로 다른 코드에 변수를 전달할 때 특히 유용하다.
하지만 다르게 말하면 auto&&는 전달 코드에서만 사용하라는 것이다.

&&는 파라미터가 복사보다는 이동을 원하는 객체라는 것을 가리킨다. C++ 용어로 얘기하면 오른쪽 값 (r-value)라고 한다.

템플릿 메서드에서 auto&&와 T&&만이 전달 참조이다.


auto&와 auto는 가변 참조나 명시적 복사 동작이 필요할 때만 사용돼야 한다.
이런 변수가 다른 변수를 맘대로 변경시키기 때문에 주의해야 하며, 복사되지 않을 경우 다른 변수를 변경시킬 수도 있다는 것을 코드보는 사람에게 알려준다.

profile
I can be your Genie🧞‍♀️ How ‘bout Aladdin? 🧞‍♂️

0개의 댓글