1. template
함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다.
함수나 클래스를 개별적으로 다시 작성하지 않고도 수많은 자료형에서 동작할 수 있게 한다.
중복되는 자료형에 대해 코드를 중복시키지 않고 일반화를 할 수 있다.
C++에서는 템플릿 특수화가 가능해서 vector처럼 특정 타입에 대해서 다른 식으로 동작하게끔 만들 수 있다.
2. 장점
컴파일러가 컴파일 타임에 템플릿 인스턴스에 대한 코드를 만들어주기 때문에 런타임이 줄어든다.
타입만 다른 중복 코드들을 모을 수 있다.
컴파일 도중 다형성 부여가 가능해서 vtable이 없고, 따라서 더 빠르게 동작한다.
3. 단점
컴파일 타임에 인스턴스를 생성해서 컴파일 타임이 늘어난다.
쓸모없는 템플릿 변형을 막을 방법이 없다.
다형성이 추가될 경우 파일이 커져서 실행시간이 늘어날 수 있다.
참고자료
https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B)
'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 |