C++ 템플릿과 제네릭

C++의 템플릿(Template)은 데이터 타입에 제한되지 않고 일반화된 코드를 작성할 수 있게 해주는 효율적인 도구이다.

제네릭 프로그래밍의 핵심이자 C++의 재사용성을 뒷받침하는 템플릿의 개념을 정리했다.

타입의 경계를 넘는 템플릿

템플릿을 사용하면 하나의 코드로 여러 타입을 처리할 수 있다.

  • 함수 템플릿: int, double, 사용자 정의 클래스 등 로직이 같다면 하나의 함수로 대응 가능하다.
  • 클래스 템플릿: 타입을 파라미터로 받는 클래스를 생성한다.
    std::vector<T>가 대표적인 예이다.

  • 템플릿 특수화: 보편적인 로직이 특정 타입(예: char*bool)에서 다르게 동작해야 할 때 해당 타입만을 위한 처리를 정의할 수 있다.

성능과 범용성

템플릿은 컴파일 시점에 해당 타입에 맞는 코드가 생성된다.

런타임에 타입을 체크하는 비용이 없어 성능 손실 없이 범용적인 코드를 작성할 수 있다.

다만 컴파일 시간이 길어지거나 바이너리 크기가 커질 수 있다는 점을 고려해야 한다.

STL의 구조

STL(Standard Template Library)이 강력한 이유는 템플릿에 기반하기 때문이다.

타입 안정성을 유지하면서 코드의 재사용성을 극대화하는 템플릿은 현대 C++ 개발의 필수 요소인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts