Class Template

클래스 템플릿은 하나의 설계도를 타입별 실제 클래스로 찍어 낸다

Stack<T>는 아직 완성된 클래스가 아니라 타입 자리가 비어 있는 설계도입니다. Stack<int>처럼 타입 인자를 넣는 순간 컴파일러가 구체 클래스를 만듭니다.

template <typename T>
자료형 자리 T를 남겨 둔 클래스 설계도
Stack<int>
T가 int로 치환된 실제 클래스
Stack<string>
같은 로직을 string 저장용으로 재사용
정의

로직은 한 번만 쓴다

push, pop, top의 알고리즘은 타입과 무관하게 공유됩니다.

사용

타입을 인자로 넣는다

Stack<int>, Stack<string>처럼 구체 타입을 지정합니다.

결과

타입별 코드가 생성된다

컴파일러는 필요한 조합만 인스턴스화합니다.