템플릿 프로그래밍(template programming)
= 제너릭 프로그래밍(generic programming)
C: 절차지향 언어(Procedural language)
JAVA : 객체지향언어(Object-Oriented language)
C++은 표준으로 템플릿을 라이브러리 형태로 제공한다. (STL)
근데 템플릿은 잘못 작성하면 미친듯한 오류를 생성해낸다.
그럼에도 쓰는 이유는
- 타입 독립성(코드의 재사용성)
- 코드 중복 감소
- 컴파일 타임에 오류 발견
템플릿(Template)
- 함수의 작성을 용이하게 하고, 재사용 가능하게끔 하여 SW 생산성과 유연성을 증가시킨다.
-- 자료형이 변할 때마다 함수(클래스)를 새로 작성할 이유가 없다.
- c에서 #define으로 정의되는 매크로와 유사하지만, 타입 안정성 확보 면에서 오류를 최소화한다.


오른쪽처럼 함수를 템플릿화하면, 호출되는 함수만 함수 생성을 하게 되는데 이를 인스턴스가 생성됬다고 한다,
컴파일러가 알아서 해당 자료형에 맞는 함수를 생성하고 이를 '템플릿 함수'라고한다.
템플릿 특수화


여러가지 템플릿 함수
- print 함수가 호출되면, 일단 템플릿 함수가 생성되고
- 이때, 변수를 두 개 이상 받을 때와 한 변수만 받을 템플릿 함수를 선언한다.
- 함수의 파라미터가 여러 개이면 두번째 생성되는 템플릿 함수에서 재귀함수형태로 계속 실행되다가 첫 번째 함수를 실행하게 된다.

- 이런 식으로 파라미터를 섞어서 템플릿을 정의해도 된다.

'ProgramingLagnuage > C++' 카테고리의 다른 글
| [C++] 객체지향 프로그래밍 (0) | 2025.01.01 |
|---|---|
| [C/C++] 동적 메모리 할당 방식, 변수 취급 방식 차이 (1) | 2024.12.31 |
| [C++] 사용자 정의 유형 - Structure (0) | 2024.09.23 |
| [C++] C++ 소개 (0) | 2024.09.22 |
| [C++] Class 주요 개념 (0) | 2024.09.22 |