Intro
오늘은 C++ STL 중에 가장 많이 쓰이게 될지도 모르는? auto라는 키워드에 대해 설명하겠습니다.
auto
C++에서 auto는 변수를 정의할 때 명시적으로 형을 지정해 주지 않아도 됩니다.
왜냐하면 auto 변수는 초기화할 때 초기화 값에 따라서 자동으로 형을 결정해 주기 때문입니다.
즉, auto는 변수를 정의할 때 명시적으로 형을 지정하지 않고 컴파일러가 형을 자동으로 지정해주는 키워드입니다.
하지만 auto는 지역변수에서만 사용이 가능합니다.
클래스의 멤버 변수, 전역 변수, 함수의 인자로의 사용은 불가능합니다.
그리고 선언과 동시에 초기화를 시켜줘야 합니다.
그렇지 않으면 auto의 형식을 추론할 수 없다는 오류 메시지가 뜨게 됩니다.
정적 언어 vs 동적 언어의 차이
최근에 JavaScript, Ruby, Python 같은 스크립트 언어가 인기가 많습니다. 실제 개발에서 많이 쓰이기도 합니다. 이러한 스크립트 언어를 동적 언어라고 합니다. 이와 반대로 C, C++, C#, Java, Objective-C를 정적 언어라고 합니다. 정적 언어는 변수형을 선언하거나 정의할 때 명시적으로 자료형을 지정해야 합니다. ex) int a, double b, float c. 하지만 동적 언어는 자료형을 명시적으로 지정하지 않아도 됩니다. auto를 사용하면 스크립트 언어처럼 자료형을 지정하지 않아도 됩니다.
Example
#include<iostream>
int main()
{
auto Name = "Anabebe";
std::cout << Name << std::endl;
auto nNum = 100;
std::cout << nNum << std::endl;
auto fNum = 100.99;
std::cout << fNum << std::endl;
return 0;
}
마무리
auto를 사용하면 프로그래밍이 이전보다 훨씬 더 간편해집니다.
STL의 컨테이너를 사용할 때 귀찮은 부분 중 하나가 반복자를 정의할 때 반복자를 길게 적어야 할 때가 있습니다.
이때 typedef를 사용하여 불편함을 감소시켜야 하지만 auto를 사용하면 불편함을 없앨 수 있습니다.
하지만 auto는 만능이 아닙니다. 같이 협업하는 사람 중에 auto를 아주 사랑하는 동료가 있었는데 모든 변수에 auto를 남발하다 보니 자료형을 정확히 알아야 하는 경우 찾기가 힘들었습니다.
하지만 auto를 적절하게 사용하면 분명 편리하고 애용하는 기능 중 하나가 될 것입니다.
'[C++ STL]' 카테고리의 다른 글
[C++ STL - forward_list] (0) | 2021.06.24 |
---|---|
[STL - 메모리 관리(스마트 포인터 shared_ptr, unique_ptr] (0) | 2021.06.08 |
[C++ STL - tuple] (0) | 2021.05.21 |
[C++ STL - range based for] (0) | 2021.05.13 |
[C++ STL - 람다(lambda)] (0) | 2021.05.04 |