템플릿 : 컴파일러가 미리 등록된 함수의 형틀을 기억 해두었다가 함수가 호출될때 실제 함수를
만드는 장치이다.
- 템플릿은 매개변수의 데이터 타입에 기초한 함수와 클래스를 생성하는 메커니즘이다.
- 따라서 템플릿을 매개 변수가 있는 데이터 타입이라고 한다.
- 템플릿을 사용하면 각 데이터 타입에 대한 별도의 클래스 또는 함수를 생성할 필요없이 단 하나의
클래스를 생성하여 그 클래스를 여러 데이터 타입에 사용할수 있게 된다.
함수 템플릿 : 함수를 찍어 내기 위한 형틀 이다.즉 이 템플릿에 의해 함수가 만들어진다
: 이렇게 만들어진 함수들은 기능은 결정되어있지만, 자료형은 결정되어있지않다.
- 같은 기능을 하는 함수도 다양한 자료형을 인자로 호출이 가능하다.
- 자료형을 명시하지않으면 컴파일러가 인자를 확인하여 호출될 함수의 유형을 결정한다.
템플릿 함수 : 템플릿을 기반으로 한 함수
** 템플릿 함수와 함수 템플릿
템플릿 함수는 템플릿으로 부터 만들어지는 함수를 말하고,
함수 템플릿은 함수를 만드는 템플릿을 말한다.
-> 클래스 템플릿은 함수 템플릿과 비슷하되 찍어내는 대상이 클래스라는것만 다르다.
: 클래스들을 일일이 따로 만드는 대신 템플릿을 정의한후 템플릿으로부터 클래스를 만들수있다.
: 템플릿 클래스가 다른 클래스의 기반 클래스로 사용되면 컴파일러는 클래스를 즉시 구체화 한다.
: 템플릿으로 부터 만들어지지않은 일반 클래스의 특정 멤버 함수만 템플릿으로 선언하는것도 가능하다.
* 일반 함수와 함수 템플릿은 같은 이름을 가질수 있으면 같은 데이터 형을 갖고 인스턴스화 될수도 있다.
* 이외의 요소들이 동일할 경우 템플릿이 아닌 일반함수를 템플릿으로 만들어진 함수보다 더우선순위가 높다.