[C++] 템플릿(Template) 1: 함수 템플릿
템플릿 기초 1
인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다.
😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기!
템플릿이란?
템플릿 : 함수나 클래스를 찍어내는 틀
템플릿 종류
- 함수 템플릿
- 클래스 템플릿
함수 템플릿 기초
#include <iostream> using namespace std; template<typename T> void Print(T a) { cout << a << endl; } int main() { Print<int>(50); // 명시적으로 <int>라고 적어줄 수도 있다 Print(50.0f); Print(50.0); Print("Hello World"); return 0; }


함수 템플릿
#include <iostream> using namespace std; class Knight { public: // ... public: int _hp = 100; }; template<typename T> void Print(T a) { cout << a << endl; } template<typename T1, typename T2> void Print(T1 a, T2 b) { cout << a << " " << b << endl; } template<typename T> T Add(T a, T b) { return a + b; } // 연산자 오버로딩 (전역함수 버전) ostream& operator<<(ostream& os, const Knight& k) { os << k._hp; return os; } int main() { Print<int>(50); // 명시적으로 <int>라고 적어줄 수도 있다 Print(50.0f); Print(50.0); Print("Hello World"); Print("Hello ", 100); int result1 = Add(1, 2); float result2 = Add<float>(1.11f, 2.22f); Knight k1; Print(k1); return 0; }

함수 템플릿 특수화
#include <iostream> #include <iostream> using namespace std; class Knight { public: // ... public: int _hp = 100; }; template<typename T> void Print(T a) { cout << a << endl; } // 템플릿 특수화 template<> void Print(Knight a) { cout << "Knight !!!!!!!" << endl; cout << a._hp << endl; } template<typename T1, typename T2> void Print(T1 a, T2 b) { cout << a << " " << b << endl; } template<typename T> T Add(T a, T b) { return a + b; } // 연산자 오버로딩 (전역함수 버전) ostream& operator<<(ostream& os, const Knight& k) { os << k._hp; return os; } int main() { Print<int>(50); // 명시적으로 <int>라고 적어줄 수도 있다 Print(50.0f); Print(50.0); Print("Hello World"); int result1 = Add(1, 2); float result2 = Add<float>(1.11f, 2.22f); Knight k1; Print(k1); return 0; }

'⭐ Programming > C++' 카테고리의 다른 글
[C++] 콜백 함수 (Callback function) (0) | 2022.04.17 |
---|---|
[C++] 템플릿(Template) 2: 클래스 템플릿 (0) | 2022.04.17 |
[C++] 함수 객체 (0) | 2022.04.16 |
[C++] 함수 포인터 2 (0) | 2022.04.16 |
[C++] 함수 포인터 1 (0) | 2022.04.15 |
댓글
이 글 공유하기
다른 글
-
[C++] 콜백 함수 (Callback function)
[C++] 콜백 함수 (Callback function)
2022.04.17 -
[C++] 템플릿(Template) 2: 클래스 템플릿
[C++] 템플릿(Template) 2: 클래스 템플릿
2022.04.17 -
[C++] 함수 객체
[C++] 함수 객체
2022.04.16 -
[C++] 함수 포인터 2
[C++] 함수 포인터 2
2022.04.16
댓글을 사용할 수 없습니다.