컴파일 타임에 type이 결정이 되며 현재까진 대부분의 타입이 정의 된다.
//자료형
auto Name = "yoem"; ==> char*
auto Num = 1; ==> int
auto Name = "Yoem"; //char*
auto Num = 1; //int
int Num2 = 4;
auto* pNum2 = &Num2; //int*
auto& refNum2 = Num2; //Reference
class A
{
};
auto pA = new A(); // Class A Pointer
하지만 막상 사용해보면 자료형용만 쓰면 단점이 있었다. 가장 큰 단점으로 보인것은 아무래도 코드 수정중 해당 타입이 무엇인지 한번에 알기 어려웠다. 물론 찾아가면 알수 있지만 보자마자 아 이것 무슨 형식이구나 하는 시간이 걸렸고 그래서 위의 형태로는 잘 사용을 안하게 되었다. 그렇다면 어떻게 사용할까 현재까지는 위의 형식 말고 전부라고 해도 될꺼 같다.
//Iterator
std::vector vArray;
vArray.push_back(1);
vArray.push_back(2);
vArray.push_back(3);
for(auto iter = vArray.begin(); iter != vArray.end(); iter++)
{
}
//lambda
void Add(int a, int b)
{
return a+b;
}
auto Func = [](int a, int b){ return Add(a,b); };
int nNum = Func(4,5);
형식으로 사용한다. iterator 형식은 auto로 사용안하게 되면
std::vector<int>::const_iterator
형식으로 써야하는데 저걸 단 4 글자로 줄일수 있는것이다. 또한 lambdb도 함수 포인터 형식으로 했는데 iterator와 마찬가지로 글자수를 많이 줄여줄수 있다.
'C++ > C++11' 카테고리의 다른 글
C++11 특징 (std::pair, std::tuple) (0) | 2021.03.10 |
---|---|
C++ 11 특징 ( R Value) (0) | 2021.03.09 |
C++11 특징 (Uniform 초기화) (0) | 2021.03.05 |
C++11 특징 (lambda) (0) | 2021.03.03 |
C++11 특징( ranged for loop) (0) | 2021.03.03 |