[전문가를 위한 C++] 12장. 템플릿으로 제네릭 코드 만들기

Chapter 12. 템플릿으로 제네릭 코드 만들기

C++은 언어 차원에서 객체지향 프로그래밍뿐만 아니라 제네릭 프로그래밍도 지원한다. 제네릭 프로그래밍의 목적은 코드를 재사용할 수 있게 작성하는 것이다. C++에서 제네릭 프로그래밍을 위해 제공하는 핵심 도구는 템플릿이다.

엄밀히 말해 템플릿은 객체지향 기법에는 속하지 않지만 객체지향 프로그래밍에서 함께 적용하면 강력한 효과를 발휘한다.

12.1 템플릿 소개

템플릿을 이용하면 주어진 값 뿐만 아니라 그 값의 타입에 대해서도 독립적인 코드를 작성할 수 있다. 예를 들어, 스택 클래스를 정의할 때 int, Car, SpreadSheetCell과 같은 각각의 타입마다 따로 정의하지 않고, 스택 클래스 하나에 모든 타입에 적용할 수 있게 만들 수 있다.

12.2 클래스 템플릿

클래스 템플릿은 주로 객체를 저장하는 컨테이너나 데이터 구조에서 많이 사용한다.

12.2.1 클래스 템플릿 작성법

12.2.2 꺽쇠괄호

12.2.3 컴파일러에서 템플릿을 처리하는 방식

12.2.4 템플릿 코드를 여러 파일로 나누기

12.2.5 템플릿 매개변수

12.2.6 메서드 템플릿

12.2.7 클래스 템플릿 특수화

12.2.8 클래스 템플릿 상속하기

12.2.9 상속과 특수화 비교

12.2.10 앨리어스 템플릿

12.3 함수 템플릿

(메서드가 아닌) 일반 함수도 템플릿화할 수 있다.

12.3.1 함수 템플릿의 특수화

12.3.2 함수 템플릿 오버로딩

12.4 변수 템플릿

12.5 요약