오븐 노트

[C++] 템플릿 기초 #1 본문

Develop/C++

[C++] 템플릿 기초 #1

오 븐 2023. 5. 3. 15:00
#include <iostream>
using namespace std;

class Knight
{
public:
    // ...

public:
    int _hp = 100;
};

template<typename T> // class로 지어도 가능하지만 class 문법과 헷갈리니 typename 사용
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()
{
    // 템플릿 : 함수나 클래스를 찍어내는 틀
    // 1) 함수 템플릿
    // 2) 클래스 템플릿

    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;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 콜백 함수  (0) 2023.05.18
[C++] 템플릿 기초 #2  (0) 2023.05.03
[C++] 함수 객체  (0) 2023.05.01
[C++] 함수 포인터 #2  (0) 2023.05.01
[C++] 함수 포인터 #1  (0) 2023.04.28