[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++에서 만들어진 건 몰랐었는데 알게되어서 좋은 것 같다.
Leave a comment