데이터형에 상관없이 적용가능한 함수
#include <iostream>
using namespace std;
template <class Any> // typename Any도 가능, Any는 임의로 정한 이름
Any sum(Any, Any);
int main() {
int a = 3;
int b = 4;
cout << sum(a, b) << endl;
float c = 2.1;
float d = 2.3;
cout << sum(c, d) << endl;
// cout << sum(a, c) << endl; // a 기준 Any는 int로 인식되어 c는 float이므로 오류남
return 0;
}
template <class Any>
Any sum(Any a, Any b) {
return a + b;
}
위의 오류 수정
#include <iostream>
using namespace std;
template <class Any> // typename Any도 가능, Any는 임의로 정한 이름
Any sum(int, Any);
int main() {
int a = 3;
float c = 2.1;
cout << sum(a, c) << endl;
return 0;
}
template <class Any>
Any sum(int a, Any b) {
return a + b;
}
오버로딩 추가
#include <iostream>
using namespace std;
template <class Any> // 오버로딩
Any sum(Any, Any);
template <class Any>
Any sum(int, Any);
int main() {
int a = 3;
int b = 4;
//cout << sum(a, b) << endl; // 첫 번째 함수와 두 번째 함수 모두에 해당되어 사용 불가
float c = 2.1;
float d = 2.3;
cout << sum(c, d) << endl;
cout << sum(a, c) << endl;
return 0;
}
template <class Any>
Any sum(Any a, Any b) {
return a + b;
}
template <class Any>
Any sum(int a, Any b) {
return a + b;
}
728x90
'c++ 기초' 카테고리의 다른 글
20) 클래스 (0) | 2025.01.03 |
---|---|
19) 분할 컴파일 (0) | 2025.01.02 |
17) 함수 오버로딩 (0) | 2025.01.01 |
16) 참조, 포인터, 값에 의한 호출 (0) | 2025.01.01 |
15) 인라인 함수 (0) | 2024.12.31 |