본문 바로가기
프로그래밍/C++

C++ 변수 형 타입 auto

by Hwan2 2019. 7. 1.
반응형

 

 

 

 

C++로 변수를 선언할 때 보통 자료형을 선언해 줍니다.

 

int a = 10;
double b = 5.12;
char c[] = "hello";

 

이런식으로 말이죠.

 

하지만 요즘 개정된 modern c++이나 boost 를 사용 할 시 다음 키워드를 사용할 수 있습니다.

 

바로 auto 이죠.

 

auto 키워드는 따로 자료형을 지정해 주지 않아도 '변수 초기 값'에 따라 자동으로 자료형 타입이 결정됩니다.

 

int main(void) {

    auto a1 = 10;
    auto a2 = 5.41;
    auto s = "hello";


    cout << sizeof(a1) << endl;
    cout << sizeof(a2) << endl;
    cout << strlen(s) << endl;

    return 0;
}

 

단, 문자열 같은 경우엔 string이 아니라 char[]형 배열로 인식해서 포인터로 정의가 되더군요.

(정확히는 상수지만....)

 

 

뿐만 아니라 auto는 선언하기 귀찮은 inner class의 객체 선언도 쉽게 표현할 수 있습니다.

vector<int> v;

vector<int>::iterator itr = v.begin();

 

보통 iterator 객체를 선언하게 되면 저런식으로 선언이 되지만

auto를 사용한다면 쉽게 선언할 수 있게 됩니다.

vector<int> v;

auto itr = v.begin();

 

이렇게 말이죠.

 

auto를 사용할 때 주의해야 할 점이 있습니다.

 

1. 변수선언과 동시에 초기화를 해 줘야 한다.

2. 매개변수로는 사용할 수 없다.

3. return 값은 auto로 해줘도 가능하다.

 

// ex1)
auto a;
a = 10;        //<<<<<< 컴파일 에러!!


// ex2)
void add(auto a, auto b){

}            //<<<<<<<< 컴파일 에러!!



// ex3)
auto cal(int n1, int n2){
    return n1 + n2;
}            //<<<<<<<<< 컴파일 가능!!

 

 

modern C++은 visual studio 2012 버전 이상부터 적용되는 것임으로 현재 최신버전으로 

visual studio를 설치하셔서 공부중이시라면 그냥 사용 가능할 것입니다.

 

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서