반응형
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를 설치하셔서 공부중이시라면 그냥 사용 가능할 것입니다.
반응형
'프로그래밍 > C++' 카테고리의 다른 글
C++ inline 함수란? (3) | 2019.07.13 |
---|---|
C++ Lambda 사용 이유와 사용 방법 (12) | 2019.07.01 |
C++ 템플릿 클래스 (0) | 2019.05.17 |
C++ 템플릿, 템플릿 함수, 함수 템플릿의 특수화.... (0) | 2019.05.17 |
cout, cin, endl의 연산자 오버라이딩. (0) | 2019.05.17 |
댓글