본문 바로가기

CS 지식

[C++] template

1. template

함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다. 

함수나 클래스를 개별적으로 다시 작성하지 않고도 수많은 자료형에서 동작할 수 있게 한다.

중복되는 자료형에 대해 코드를 중복시키지 않고 일반화를 할 수 있다.

C++에서는 템플릿 특수화가 가능해서 vector처럼 특정 타입에 대해서 다른 식으로 동작하게끔 만들 수 있다.

 

2. 장점

컴파일러가 컴파일 타임에 템플릿 인스턴스에 대한 코드를 만들어주기 때문에 런타임이 줄어든다.

타입만 다른 중복 코드들을 모을 수 있다.

컴파일 도중 다형성 부여가 가능해서 vtable이 없고, 따라서 더 빠르게 동작한다.

 

3. 단점

컴파일 타임에 인스턴스를 생성해서 컴파일 타임이 늘어난다.

쓸모없는 템플릿 변형을 막을 방법이 없다.

다형성이 추가될 경우 파일이 커져서 실행시간이 늘어날 수 있다.

 

참고자료

https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B)

https://github.com/Romanticism-GameDeveloper/GameDeveloper-Client-Interview/blob/main/C%2B%2B/template.md

'CS 지식' 카테고리의 다른 글

[C++] vector  (0) 2025.05.08
[C++] typedef vs using (별칭 선언)  (0) 2025.05.08
[C++] struct vs class  (0) 2025.05.08
[C++] static  (0) 2025.05.08
[C++] map vs unordered_map  (0) 2025.05.08