템플릿

함수나 클래스에서 사용되는 변수가 다른함수나 클래스를 정의할때 변수의 type이 바뀌는 경우 template 클래스로 정의한다. 그리고 사용 되는 변수에 맞게 객체를 선언시 컴파일러가 알아서 해당하는 함수나 클래스를 생성하여준다.

템플릿 클레스

달라지는 부분은 총 네가지이다.

1.클래스 선언 앞부분.

2.함수 선언 앞부분.

3.함수 scope 부분.

4.변수 선언부

->모든 함수, 클래스 앞부분은 template<class T>를 써주자.

ex)

헤더파일 ```

#pragma once template 1.클래스 선언 앞부분에 템플레이트 정의삽입! class CPair { public: void Setm1(T ma);
T Getm1() const; CPair(T ma);

private: T m1; };

>cpp 파일

#include "stdafx.h"

#include "CPair.h" template ->2.함수선언 앞부분 정의 삽입! CPair::CPair(T ma) : m1(ma) ->3.함수 스코프 앞에 리턴타입t와 삽입! {

} template T CPair::Getm1() const { return m1; } template void CPair::Setm1(T ma) { m1 = ma; }

>main문

#include "stdafx.h"

#include "CPair.h";

#include "CPair.cpp"

#include

#include using namespace std;

int main() { CPair q1(10); ->변수선언을 벡터처럼 바꾸어줌!이것은 int형 q1! cout << q1.Getm1(); return 0; }

# 템플릿 함수

달라지는 부분은 총 세가지이다.

1.함수선언 앞부분

2.변수선언부

3.함수 정의 앞부분.

ex) template void swapValues(T& var1, T& var2);

int main() { //char a = 'a', b = 'b';

int a = 3, b = 4;
cout << "a=" << a << "b=" << b<<endl;
swapValues(a, b);
cout << "a=" << a << "b=" << b<<endl;

char c = 'c', d = 'd';
cout << "c=" << c << "d=" << d << endl;
swapValues(c, d);
cout << "c=" << c << "d=" << d<<endl<<endl;

return 0;

}

template void swapValues(T &r1, T &r2) { T temp; temp = r1; r1 = r2; r2 = temp; }

```

+ Recent posts