반응형
템플릿함수란 똑같은 내용의 함수을 자료형에따라 오버로딩할 필요 없이 한번에 뭉쳐서 정의하는 함수이다.
일반적으로 자료형을 뭉쳐놓은것을 템플릿이라고 이해하면 쉽게 이해가 될 것 같다.
함수에서 사용하면 템플릿 함수가 되는것이고, 클래스에서 사용하면 템플릿 클래스가 된다.
먼저 템플릿 함수에 대해서 알아보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | template<typename T> void print(T data) //템플릿 함수 정의 { cout << data << endl; } int main() { int a = 10; float b = 3.14; string c = "hello"; print(a); print(b); print(c); } /*실행결과 10 3.14 hello */ | cs |
T라는 템플릿을 활용해서 print함수를 만들었다.
int, float, string 어떠한 타입이 들어가도 그대로 출력이 된다.
이제 템플릿 클래스에대해서 알아보자.
템플릿 클래스가 템플릿 함수와 다른점이 있다면 선언시에 자료형을 명시를 해줘야한다는것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | template<class T> class Tclass // 템플릿 클래스 정의 { private: T data; // 템플릿 변수 선언 public: Tclass(T data) { // 생성자로 data 초기화 this->data = data; } void print_data() {//data 출력함수정의 cout << this->data<<endl; } }; int main() { Tclass<int> *T = new Tclass<int>(10); //int형으로 명시 Tclass<float> *T2 = new Tclass<float>(3.14); //float형으로 명시 Tclass<string> *T3 = new Tclass<string>("hello"); //string형으로 명시 T->print_data(); T2->print_data(); T3->print_data(); } /*실행결과 10 3.14 hello */ | cs |
내부에 data를 템플릿형식으로 선언해주고 public안에 생성자의 인자를 템플릿형식으로 받아와서 초기화를 한다.
각각 명시된 자료형을 가진 템플릿 클래스를 객체화 시키면서 생성자로 data변수를 초기화 시켜주고
print_data함수로 data변수를 찍어보았을때 초기화된 값으로 그대로 찍히게 된다.
반응형
'프로그래밍 > c++' 카테고리의 다른 글
[c++] 프로그램 대기 함수 Sleep() (0) | 2020.09.16 |
---|---|
[c++] string 자주 쓰이는 함수 정리 (0) | 2020.09.11 |
[c++] virtual(가상함수,순수가상함수) (0) | 2018.12.19 |
[c++] class의 상속 (부모class 및 자식class) (0) | 2018.12.19 |
[c++] class의 생성자 및 소멸자 (0) | 2018.12.19 |