템플릿이란 무엇이냐? 하나의 클래스를 서로 다른 (사용자가 원하는) 타입에 재사용할 수 있도록 하는 것이다. 타입만 넣어주면 자동으로 코드를 찍어내는 틀이라고 보면 된다. 예를 들어서 여러 타입의 객체를 저장할 수 있는 연결리스트와 같은 자료구조를 만들 수 있다. **template 와 template 는 정확히 같은 의미를 같지만 typename키워드를 많이 쓴다. //template class를 만들었다. template class ShiftedList { T* array; // 특정 타입의 배열 int offset, size; public: ShiftedList(int sz) : offset(0), size(sz) { array = new T[size]; // 타입 T의 배열 } ~ShiftedLi..