Page 115

템플릿은 매개변수화 개념을 더욱 발전시켜 값뿐만 아니라 타입에 대해서도 매개변수화한다.

C++에서 기본으로 제공하는 int, double 같은 기본 타입뿐만 아니라 SpreadsheetCell이나 CherryTree처럼 사용자가 정의한 클래스에 대해서도 매개변수화할 수 있다. 템플릿을 이용하

면 주어진 값뿐만 아니라 그 값의 타입에 대해서도 독립적인 코드를 작성할 수 있다. 예를 들어 스택 클래스를 정의할 때 int, Car, SpreadsheetCell과 같은 각각의 타입마다 따로 정의하지 않고, 스택 클래스 하나에 모든 타입에 적용할 수 있게 만들 수 있다. 템플릿이 제공하는 기능이 정말 뛰어나다는 사실은 누구나 인정하지만, C++의 템플릿 문법이 상당히 복잡해서 템플릿을 직접 정의하지 않는 프로그래머가 상당히 많다. 그래도 C++ 프로그 래머라면 최소한 템플릿 사용법을 익혀둘 필요는 있다. C++ 표준 라이브러리처럼 라이브러리 류의 코드는 템플릿을 상당히 많이 활용하기 때문이다. 이 장에서는 C++에서 제공하는 템플릿 기능을 주로 표준 라이브러리를 사용하는 관점에서 소 개한다. 또한 프로그램을 새로 구현할 때 좀 더 쓰기 좋게 만드는 데 활용할 수 있는 템플릿 기 능도 소개한다.

12.2 클래스 템플릿 클래스 템플릿 class template 은 멤버 변수 타입, 메서드의 매개변수 또는 리턴 타입을 매개변수로 받아서 클래스를 만든다. 클래스 템플릿은 주로 객체를 저장하는 컨테이너나 데이터 구조에서 많이 사용한다. 이 절에서는 Grid 컨테이너를 구현해보면서 클래스 템플릿에 대해 설명한다. 각각의 주요 기능을 이해하기 쉽도록 예제 코드의 길이를 적절히 조절하기 위해 Grid 컨테이너 에 들어갈 기능마다 별도의 절로 나눠서 설명한다.

12.2.1 클래스 템플릿 작성법 체스, 체커, 틱택토와 같은 이차원 게임에서 공통적으로 사용할 수 있는 제네릭 게임보드를 만들 어보자. 최대한 범용적으로 구성하려면 게임의 종류에 상관없이 게임의 말을 저장할 수 있어야 한다.

1 템플릿 없이 구현한 Grid 클래스 템플릿을 사용하지 않고 제네릭 게임보드를 구현하는 가장 좋은 방법은 다형성을 이용하여 제네 릭 GamePiece 객체를 저장하게 만드는 것이다. 그러면 게임의 종류에 따라 GamePiece 클래스를

12장 템플릿으로 제네릭 코드 만들기 555

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...