원래 auto 키워드는 저장 클래스 지정자(storage class specifier) 중으로 하나로 기본 지정자입니다. 기본 지정라는 의미는 굳이 지정하지 않아도 자동으로 auto로 지정된다는 의미입니다. 그러다보니 거의 사용되지 않는 키워드였는데 C++11에서 이 키워드에 매우 강력한 기능을 부여하게 되었습니다.
C++11에서 auto에 대해 새롭게 부여한 기능으로써 의미는 컴파일 타임에서 자동으로 type을 지정할 수 있도록 하는 것입니다. 아래의 코드를 예로 살펴보면 직관적으로 auto의 의미를 파악할 수 있을 것입니다.
#include "stdafx.h" #include; #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector v; for(int i=0; i<10; ++i) { v.push_back(i); } vector ::iterator it = v.begin(); while(it != v.end()) { cout << *it << endl; it++; } return 0; }
위의 코드는 우리가 흔히 C++11 이전에 써오던 코드입니다. 눈여겨 봐야할 부분은 바로 15번 코드입니다. 반복자(iterator)의 타입을 선언하기 위해 vector
#include "stdafx.h" #include; #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector v; for(int i=0; i<10; ++i) { v.push_back(i); } auto it = vInt.begin(); while(it != v.end()) { cout << *it << endl; it++; } return 0; }
변경된 부분은 오직 앞서 언급한 15번 코드입니다. 바로 vector