함수 중복의 약점
함수 중복은 편리하지만 약점도 있다
매개 변수 타입만 다른 중복된 myswap() 함수들을 일반화시킨 틀(template)을 만들고, 이 틀로부터 매개 변수 타입을 지정하여 찍어내듯이 myswap() 함수들을 만들어 낼 수 는 없을까?
일반화와 템플릿 선언
탬플릿 (template)
: 형판 (국어사전)
: 본 떠 찍어내기 위해 만들어진 틀
C++ 에서의 탬플릿
: 함수나 클래스 코드를 찍어내듯이 생산할 수 있도록 일반화(generic) 시키는 도구
- 중복 함수의 일반화
템플릿 함수 (template function) or 제네릭 함수 (generic function)
: template 키워드를 이용해서 중복 함수들을 일반화시킨 특별한 함수
- 템플릿 선언과 제네릭 타입
template <class T>
template <typename T>
=> 템플릿 함수나 클래스를 작성할 때, template이란 키워드로 시작하며 <class T>나 <typename T>로 제네릭 타입 T 선언
제네릭 타입 (generic type)이란 C++의 기본 타입
템플릿으로부터의 구체화
템플릿 역할
구체화 오류
템플릿의 장단점과 제네릭 프로그래밍
템플릿의 장점
- 함수의 작성을 용이하게 하고, 함수 코드의 재사용을 가능하게 하여 소프트웨어의 생산성과 유연성을 높인다
템플릿의 장점
- 컴파일러에 따라서 템플릿이 지원되지 않을 수 있음
- 컴파일 오류 메세지가 빈약하여 디버깅에 많은 어려움이 있음
제네릭 프로그래밍(generic programming) or 일반화 프로그래밍
: 템플릿을 사용하여 제네릭 함수나 제네릭 클래스를 만들고 이를 활용하여 프로그램을 작성하는 새로운 프로그래밍 패러다임
매크로 vs 제네릭
역할이 유사함
메크로는 실행중에 부작용 가능성이 있는 반면 제네릭은 부작용 가능성이 없음
'C++ > [책 정리] 명품 C++ 프로그래밍' 카테고리의 다른 글
3. 제네릭 클래스 만들기 (0) | 2023.04.22 |
---|---|
2. 다양한 제네릭 함수 만들기 (0) | 2023.04.22 |
9. 바람직한 C++ 프로그램 작성법 (0) | 2023.04.05 |
8. C++ 구조체 (0) | 2023.04.05 |
7. 인라인 함수 (0) | 2023.04.05 |