auto

- 선언으로부터 데이터를 자동으로 유추해서, 컴파일러가 알아서 타입을 지정해주는 키워드.


이점

 1. 선언가 동시에 초기화를 해줘야 하기때문에, 초기화를 하지 않아 발생되는 버그를 예방할 수 있다.

 2. 함수의 리턴 타입과 받는 타입이 달라 발생될 수 있는 버그를 예방 할 수 있다.

   ex) vector 등의 size()는 size_t 타입이지만, 보통, int 형으로 반환받을 경우가 많은데, 자료형 바이트 크기가 달라 문제가 발생될 수 있다.

    vector<int> vecData{1,2,3,4,5};

   auto nSize = vecData.size();

   auto nSize2 = int{vecData.size()}; //에러 발생. not allow narrowing conversion.


3.  처리해야 할 자료형에 대해서 신경을 안써도 된다. 

     vector<int>::iterator iter = vecData.begin(); 보단.

     auto iter = vecData.begin() 으로 처리할 수 있어. 반환 타입을 신경쓰지 않아도 된다.


     auto iterEnd = vecData.end();

     for(auto iter = vecData.begin(); iter != iterEnd; iter++)

{

}




주의사항 

 이동할 수 잆는 자료형은 AUTO를 사용할 수 없다.

  atomic<int> m_nData = 20;

auto atomicData = m_nData;


class CTest

{

public:

CTest() = delete;

};


auto classObject = CTest(); 이경우도 에러.



'C++ > C++ 11 14 17' 카테고리의 다른 글

C++17, structure binding, if(init; condition) switch(init;condition)  (0) 2018.04.18
C++ 11 ENUM  (0) 2018.04.11
Aggregate and POD  (0) 2018.04.04
함수포인터, std::function  (0) 2017.04.19
R 레퍼런스 타입.  (0) 2017.01.30

+ Recent posts