관리 메뉴

ComputerVision Jack

[C++프로그래밍 Chapter13] 본문

Programming Language/C++ Programming

[C++프로그래밍 Chapter13]

JackYoon 2020. 2. 4. 12:47
반응형

[템플릿(Template)에 대한 이해]

템플릿 : 자료형이 정해지지 않은 그릇

 

함수 템플릿

함수를 만드는 도구.  함수의 기능은 존재하지만, 자료형은 결정되지 않았다.

다양한 자료형의 함수를 만들어 낼 수 있다.

 

int Sample(int num1, int num2){  return num1 - num2 } 함수가 존재할 때,

템플릿으로 변환하면 

T Sample(T num1, T num2) { return num - num1 } 변환이 된다.

즉, 함수의 기능은 뺄셈으로 똑같이 정의되지만, 자료형은 T로 정의되지 않은 것을 볼 수 있다.

Sample<double>(2.5, 1.0) 형태로 사용이 가능하다.

Sample(2.5, 1.0) 식으로 사용이 된다면, 알아서 값 손실 없이 인자를 전달하기 위해 double로 설정된다.

 

<템플릿 사용방법>

template<typename T>

T Sample(T num1, T num2){ .... } 

#T를 이용하여 아래의 함수를 템플릿으로 정의한다는 의미.

 

template<class T>

#위 식으로 클래스를 사용할 수도 있다.

 

둘 이상의 형(Type)에 대해 템플릿 선언하기

둘 이상의 형에 대해서도 템플릿을 적용할 수 있다.

template <class T1, class T2> = template <typename T1, typename T2> 같은 의미이다.

이 경ㅇ T1 은 int로 T2는 double로 템플릿 선언이 가능하다.

 

함수 템플릿의 특수화(Specialization)

상황에 따라서 함수의 구성 방법에 예외를 둘 필요가 있다.

이 때 사용되는 것이 템플릿의 특수화이다.

 

template<>

int * ~~~~

#템플릿 함수를 정의한다. 대신 int형 템플릿 함수를 사용하고 싶은 경우 아래 형식처럼 사용해라.

[클래스 템플릿(Class Template)]

정수와 실수 클래스를 만들어야 할 경우, 두가지를 각각 자료형에 맞게 선언해야한다.

하지만 클래스 템플릿을 사용하면 한번에 구현할 수 있다.

template <typename T>

class Sample{

    private:

        T x, T y;

};

템플릿 클래스 객체를 생성할 경우 함수와는 다르게 자료형을 명시해야한다.

Sample<int> sp(3, 4);

반응형

'Programming Language > C++ Programming' 카테고리의 다른 글

[C++프로그래밍 Chapter15]  (0) 2020.02.06
[C++프로그래밍 Chapter14]  (0) 2020.02.05
[C++프로그래밍 Chapter12]  (0) 2020.02.03
[C++프로그래밍 Chapter11]  (0) 2020.02.01
[C++프로그래밍 Chapter10]  (0) 2020.01.31
Comments