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

C++ 타입 추론(Type Inference)이란? auto 키워드로 자동 형식 추론하기

타입 추론(Type Inference) 또는 형식 연역(Type Deduction)은 프로그래밍 언어에서 표현식의 데이터 타입을 컴파일러가 자동으로 판별하는 기능을 말합니다. 이 기능은 일부 강한 정적 타입(strongly statically typed) 언어에 존재하며, 개발자가 일일이 타입을 명시하지 않아도 되어 코드가 간결해지는 장점이 있습니다.

C++에서는 C++11부터 도입된 auto 키워드를 사용해 자동 타입 추론을 수행할 수 있습니다. 예를 들어, 벡터(vector)의 요소를 순회하는 반복자(iterator)를 만들 때 복잡한 타입 이름을 직접 작성하는 대신 auto를 활용하면 됩니다.

C++ 타입 추론 예제

#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;
}

코드 설명

위 프로그램에서 auto it = arr.begin(); 구문을 보면, 컴파일러는 초기화 식을 분석하여 변수 it의 타입을 자동으로 std::vector<int>::iterator로 결정합니다. 만약 auto를 사용하지 않았다면 다음과 같이 긴 타입 이름을 직접 작성해야 했을 것입니다.

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

타입 추론의 장점

  • 코드 간결화: 길고 복잡한 타입 이름을 반복해서 작성할 필요가 없습니다.
  • 유지보수 용이: 컨테이너의 타입이 변경되더라도 변수 선언부를 수정할 필요가 줄어듭니다.
  • 가독성 향상: 핵심 로직에 집중할 수 있어 코드를 읽기 쉬워집니다.

참고로 C++11에서는 auto 외에도 decltype 키워드가 함께 도입되어, 표현식의 타입을 컴파일 시점에 조회하는 기능도 제공합니다. 다만 auto는 초기화 값으로부터 타입을 추론하는 반면, decltype은 이미 존재하는 표현식의 타입을 그대로 가져온다는 점에서 차이가 있습니다.