[C++] auto

👻 Modern C++

Modern C++C++11 이후부터 나온 C++을 일컫는 말이다. 11버전은 2011년도에 나왔다. 이번 시간에는 Modern C++의 문법 중 하나인 auto에 대해서 알아볼 것이다.


👻 auto

auto형식 연역(type deduction) 규칙을 따르며 변수의 타입을 추론하여 세팅해주는 문법이다. 템플릿의 typename과 비슷하게 작동한다.

auto a = 3;
auto b = 3.14f;
auto c = 1.23;
auto d = Knight();
auto e = "Dandi";

💡 주의할 점
👉 기본 auto는 const, &무시한다.

int& reference = a;
const int cst = a;

auto test4 = reference; // int
auto test5 = cst; // int

위처럼 참조값이나 const는 자동으로 무시되어지기 때문에 주의해야한다. 예를 들어 참조를 통해 값을 변경하는 코드에 auto를 사용하게 되면 복사 연산이 되기 때문에 연산 결과가 달라질 수 있기 때문이다.

그럼에도 auto를 사용하고 싶다면 캐스팅을 통해 타입을 명시해주거나 auto 뒤에 참조를 의미하는 &를 붙이면 된다.

int& data = v[0];
// auto 사용
// auto data = v[0];  // int data = v[0]의 의미
auto& data = v[0];
auto data = static_cast<int&>(v[0]);

auto는 대부분 타이핑이 길어진다거나 할 때만 사용하는 게 좋고 가독성을 위해서는 일반적으로 변수의 타입을 놔두는 게 좋다. auto는 컴파일 타임에 결정되기 때문에 딱히 큰 성능 차이는 없다고 볼 수 있다.


👻 글을 마치며

이번 시간에는 auto에 대해 어렵지 않게 알아볼 수 있었다. 약간의 고려할 점만 빼면 대부분 알고 있었던 의미이고 사용하기 간편해서 좋아했던 기억이 있다. 모던 C++에서 만들어진 건 몰랐었는데 알게되어서 좋은 것 같다.


소스코드 보러가기


출처
인프런 Rookies님 강의

Categories:

Updated:

Leave a comment