대체 템플릿 사용 방인터페이스를

 일반적으로 오브젝트 지향 언어의 추상화를 수행하기 위해서는 인터페이스를 이용합니다. C++에서는 인터페이스라는 별도의 키워드는 없지만 순수한 가상 함수만으로 구성된 추상 클래스를 인터페이스로 사용합니다.이와 같이 가상함수를 이용한 추상화와 다형성은 내부적으로 멤버 함수를 호출할 때 가상함수 테이블이라는 포인터를 이용하여 각 오브젝트의 유형에 맞는 함수를 찾아내기 때문에 일반적인 함수 호출보다 조금 시간이 걸립니다. 이것은, 속도를 최대한으로 줄이려고 하고 있는 C++에 있어서의 단점입니다.따라서 C++에서는 템플릿을 이용하여 인터페이스를 대체하는 방식으로 프로그래밍을 할 수 있습니다.IWrite 인터페이스를 지우고 Write라고 함수가 각각 존재합니다. 그럼 이걸 어떻게 묶느냐 하는 문제가 있어요. 이때 C++의 템플릿이 역할을 합니다.파일을 복사하는 기능을 가진 함수라면 일반적으로는 이렇게 구성할 수 있습니다. 여기에 템플릿을 던집니다.이것은 writer가 무슨 타입인지, reader가 무슨 타입이든 각각 Write와 Read라고 하는 멤버 함수가 구현되어 있으면 문제없이 컴파일 됩니다. 또한 가상함수 테이블을 사용하지 않기 때문에 속도도 빨라집니다.이는 대체 무엇을 의미하는지 모르겠지만, 실제로 이렇게 구현된, C++를 공부한 사람이라면 누구나 썼던 라이브러리가 이렇게 구현이 되어 있는 STL입니다.STL의 vector, list, map과 컨테이너 클래스는 container라고 지을 만큼 공통된 인터페이스를 물려받은 클래스는 아니지만 begin, end 멤버 함수를 구현하여 동일한 인터페이스를 제공합니다. find나 max, min, sort 등의 함수도 특정한 인터페이스를 받아서 처리하는 것은 아닙니다.