반응형
안녕하세요? 수구리입니다.
지난 포스팅에서는 C++에서의 레퍼런스(참조) 방식과 예외처리에 대해서 알아봤었죠?
2021.08.19 - [C++] - [C++] 1.2.4 ~ 1.2.5 레퍼런스와 익셉션
이번 포스팅에서는 C++의 타입 추론 키워드인 auto에 대하여 알아보도록 하겠습니다!
바로 시작해보겠씁니다~
1.2.6 타입 추론
- 표현식의 타입을 컴파일러가 스스로 알아내는 기능이다.
- 키워드로는 auto와 decltype이 있다.
auto 키워드
- auto 키워드는 다음과 같은 상황에서 사용.
- 함수의 리턴 타입을 추론한다.
- 구조적 바인딩에 사용한다.
- 표현식의 타입을 추론하는 데도 사용한다.
- non-type 템플릿 매개변수의 타입을 추론하는 데 사용한다.
- decltype(auto)에서 사용한다.
- 함수에 대한 또 다른 문법으로 사용한다.
- 제네릭 람다 표현식에서 사용한다.
- 복잡한 타입에 적용할 때는 auto를 사용하면 편리하다.
// 복잡한 타입을 return하는 getFoo 함수.
auto result = getFoo();
- 위와 같이 작성이 가능하다. 나중에 함수의 리턴 타입을 변경하더라도 간단히 수정이 가능하다.
- 하지만 auto로 타입을 추론하게 되면 함수에 지정된 레퍼런스나 const 한정자가 제거된다!
auto를 지정하면 레퍼런스와 const 지정자가 사라져서 값이 복제된다는 점에 유의하자. 복제 방식으로 전달되지 않게 하려면 auto&나 const auto&로 지정한다.
decltype 키워드
// 컴파일러는 y가 타입이 x인 int 라고 추론하게 된다.
int x = 123;
decltype(x) y = 456;
- 인수로 지정한 표현식의 타입을 알아낸다.
- const 지정자를 삭제하지 않는다는 점에서 auto랑 다르다.
- 자세한 내용은 12장과 22장에서..
이상으로 auto 키워드와 devltype 키워드에 대해서 알아보았습니다!
여기까지가 C++에서 제공하는 고급 기능에 대해서 알아보았고,
다음 포스팅부터는 OOP(Object Oriented Programming)에 대한 내용들을 다뤄보겠습니다.
감사합니다.
반응형
'🌈 프로그래밍 > C++' 카테고리의 다른 글
[C++] 유니폼 초기화란? (2) | 2021.08.20 |
---|---|
[C++] 객체 지향 언어의 특성에 대하여 (0) | 2021.08.20 |
[C++] 1.2.4 ~ 1.2.5 레퍼런스와 익셉션 (2) | 2021.08.19 |
[C++] 1.2.3 const의 이해 (3) | 2021.08.18 |
[C++] 1.2.1 ~ 1.2.2 스트링 & 포인터와 동적 메모리 (0) | 2021.08.18 |