도서 : 초보자를 위한 C++ 프로그래밍(성안당)

지음 : 강성수 지음


 

  • 템플릿은 사용하는 자료형에 맞도록 자료형이 바뀌므로 모든 자료형에 공통으로 사용할 수 있다.
  • 템플릿은 먼저 정의만 하는 것이고, 템플릿 인자가 주어질 때 템플릿 인자를 실제 매개변수로 전달받아 그에 맞는 클래스나 함수를 선언하여 사용한다.
  • 템플릿 함수는 다음과 같이 template를 붙인 후 일반 함수와 동일한 방법으로 함수를 정의한다.
  • 실습 - 정수와 부동 소수점 오버로드 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
template <class T>
T square(T x);
 
int main() {
    double a = 6.5;
    int b = 3;
 
    cout << "double 값을 넣었을 경우 : " << square(a) << endl;
    cout << "int 값을 넣었을 경우 : " << square(b) << endl;
 
    return 0;
}
 
template <class T>
T square(T x) {
    return x * x;
}
cs
  • 결과

  • template는 자료형을 지정하지 않은 템플릿 기능을 사용할 것이라고 알리는 것이고, 꺾쇠 <> 속의 class는 모든 자료형의 매개변수에 적용할 수 있다는 의미이다.
  • int형과 double형의 함수를 따로 만들어야 했지만, template를 사용하여 하나의 함수로 정의했다.
  • 모든 자료형이 아니라 하나의 자료형만 다른 형식의 함수로 만들 수도 있다. - ex)같은 swap함수 이지만 하나는 모든 타입의 단순히 값만 바꾸는 함수와 구조체의 모든 값들을 바꿔주는 함수

'C++ 개념' 카테고리의 다른 글

클래스(class) - 생성, 소멸  (0) 2019.03.03
new 연산자와 delete 연산자  (0) 2019.03.02
inline 함수  (0) 2019.03.01
공용체  (0) 2019.03.01
포인터와 다차원 배열, 함수  (0) 2019.02.28

+ Recent posts