본문 바로가기

프로그래밍/C++

template

template

 : 타입을 가변적으로 사용할 수 있도록 해준다.

   타입을 여러개 받아서 사용할 수도 있다. 제한이 없다.

 

형태 : template <typename 이름, ...> / template <class 이름, ...>

 

템플릿은 클래스나 함수에서 사용할 수 있다.

 

ex)

 아래처럼 해주게 되면 T가 변수 타입이 된다.

 템플릿의 타입은 컴파일 시간에 정의가 된다.

 이 함수를 호출하면서 타입이 정해지기 때문이다.

 함수를 호출하는 구문을 컴파일러가 분석할 때 어떤 타입인지 정해지게 된다.

 template <typename T>
T Sum(T a, T b)
{
    return a+ b;
}

int main()
{
    // 아래처럼 명시적으로 타입을 지정해줄 수 있다.
    cout << Sum<int>(10, 20) << endl;



    // 타입을 지정하지 않을 경우 인자로 들어간 타입이 된다.
    cout << Sum(40, 50) << endl;
}

 

template 타입을 friend 지정할 때 template을 지정해주어야 한다.

 

함수 인자로

const T& data

 이렇게 넣어주면 복사해서 사용하기 보다 참조만해서 사용할 수 있게 하고 레퍼런스는 값을 변경할 수 있는데 const로 값을 변경하지 못하게 막아주는 것이다.

 

'프로그래밍 > C++' 카테고리의 다른 글

STL 소개, 컨테이너, 반복자  (0) 2019.06.13
함수 포인터  (0) 2019.06.12
const와 static  (0) 2019.06.04
복사생성자  (0) 2019.06.03
Reference (참조자)  (0) 2019.06.01