Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 타입 추론(Type Inference)이란? auto 키워드 핵심 정리

타입 추론(Type Inference)은 프로그래밍 언어에서 표현식의 데이터 타입을 컴파일러가 자동으로 판단하는 기능을 의미합니다. 이 기능은 일부 강력한 정적 타입(strongly statically typed) 언어에서 지원되며, C++에서는 C++11 표준부터 도입된 auto 키워드를 통해 자동 타입 추론을 사용할 수 있습니다.

예를 들어, 벡터(vector)의 요소를 순회하는 반복자(iterator)를 생성하고 싶다면 복잡한 타입 이름을 직접 작성할 필요 없이 auto만 사용하면 됩니다.

예제 코드

#include<iostream>
#include<vector>
using namespace std;

int main() {
    vector<int> arr(10);

    for(auto it = arr.begin(); it != arr.end(); it++) {
        cin >> *it;
    }
    return 0;
}

위 코드에서 변수 it의 타입은 컴파일러가 자동으로 std::vector<int>::iterator로 추론합니다. 만약 auto를 사용하지 않았다면 아래와 같이 길고 복잡한 타입을 직접 명시해야 했을 것입니다.

for(vector<int>::iterator it = arr.begin(); it != arr.end(); it++)

타입 추론의 장점

  • 코드 간결성: 길고 복잡한 타입 선언을 줄여 가독성을 크게 높입니다.
  • 유지보수 용이성: 컨테이너의 타입이 변경되더라도 변수 선언부를 수정할 필요가 없습니다.
  • 오류 감소: 개발자가 잘못된 타입을 명시할 가능성을 줄여 버그 발생을 예방합니다.

참고: decltype 키워드

C++11에서는 auto 외에도 decltype 키워드를 활용하면 표현식의 타입을 컴파일 시점에 그대로 얻어낼 수 있습니다. 두 키워드를 적절히 조합하면 현대적인 C++ 코드를 더욱 안전하고 깔끔하게 작성할 수 있습니다.