▣ 데이터타입별로 반환형 매개변수를 다르게 하여 함수오버로딩 가능,
하지만 다른 데이터타입에 대한 걸 계속 만들어야 하기 때문에 가독성이 떨어진다.
▣ 템플릿 : 함수와 클래스가 제네릭형으로 동작할 수 있게 해주는 틀
▣ 제네릭 : 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술
https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B)
▣ 템플릿함수를 만드는 방법 : template <class 데이터이름> 반환형 함수이름(데이터타입 변수이름)
▣ 같은 함수를 사용해도 데이터에 맞는 데이터타입으로 받고 돌려줄 수 있다.
▣ 템플릿 함수를 만드는 건 코드가 줄어드는 게 아니라 컴파일러가 위에 있는 함수들을 만들어서 진행하는 것과 같다.
▣ template <class T, class T2> : 이렇게 두 개에 다른 데이터타입을 진행할 때 class T2, 콤마로 구분하여 또 다른 템플릿을 만들어서 사용할 수 있다.
▣ 숫자뿐만 아니라 문자열 데이터타입도 가능하다.
▣ 만약 템플릿 함수와 이름이 동일한 함수가 중복되면, 컴파일러는 중복된 함수를 템플릿 함수보다 먼저 바인딩한다.
▣ 클래스템플릿도 가능하다.
▣ 클래스 템플릿 만드는 방법 : template <class T, class T2> class Player 동일하지만
▣ 클래스 템플릿을 사용하려면 : 클래스이름 <데이터타입, 데이터타입> 변수이름(10,20)
Player<int, int> p1(10, 20);
Player<double, double> p2(3.14, 3.14);
Player<string, string> p3("Hi", "C++");
처럼 데이터타입을 지정해줘야 한다.
'[ C++ ] > - C++ 문법정리' 카테고리의 다른 글
C++ 23 [STL, list] (0) | 2023.04.26 |
---|---|
C++ 22 [STL, vector] (0) | 2023.04.25 |
C++ 20 [추상클래스, 순수가상함수] (0) | 2023.04.20 |
C++ 19 [가상함수, 오버라이딩] (0) | 2023.04.20 |
C++ 18 [상속, 다중상속, 가상상속] (0) | 2023.04.19 |
댓글