프로그래밍 언어/C++

[게임 프로그래머 입문 올인원] 템플릿 문법 (52강)

순정법사 2024.02.15

A. 템플릿 문법

1. 템플릿 문법

a. 템플릿이란? 

🌟 함수나 클래스를 작성할 때 특정한 데이터 타입에 의존하지 않고 유연하게 작성할 수 있게 하는 것

 

  • 제네릭 프로그래밍을 지원하기 위한 강력한 언어 특징
  • 코드의 재사용성을 높이고 일반화된 알고리즘을 작성하는데 도움
  • 👉 런타임 X 컴파일할때 모든것이 다 결정되고 사용됨 
  • 사용하지 않으면 컴파일시 존재조차 만들어지지 않음 = 오류나지 않음

 

템플릿은 두 가지 주요 형태로 사용

 

  1. 함수 템플릿
  2. 클래스 템플릿

 

C#의 제네릭이랑 비슷하지만 기능이 더 많고 어렵다 (거의 흑마법)

 

b. 함수 템플릿

1) 정의 

 

🌟 함수의 데이터 타입을 일반화하여 함수를 선언하고 정의

 

다양한 데이터 타입에 대해 동일한 코드를 재사용할 수 있게 함

 

📘 문법 예제

template<typename T>

//T : template의 약어로, 다른 이름으로 변경 가능하나 대부분 이렇게 사용

 

👉 함수 위에서 조커카드처럼 사용가능

 

사실 <> 부분이 생략되어 있음

 

2) 여러개 사용하기

 

동일 함수에서 여러개로 사용할 수 있게 해주는게 아니라

따로따로 작성한 것 처럼 컴파일러에서 별도의 함수를 파줌!

 

매개변수로 이렇게 여러개 사용할 수 있음

 

3) 별도 템플릿 작성하기

 

위 경우를 사용하다가 int 값만 따로 받는 함수를 사용하고 싶다면

 

이렇게 사용가능함

 

c. 클래스 템플릿

1) 정의 

 

🌟 클래스의 데이터 멤버나 멤버 함수의 데이터 타입을 일반화하여 클래스를 선언하고 정의

 

다양한 데이터 타입에 대해 동일한 클래스를 재사용할 수 있게 함

>> 저번에 공부한 Vector 같이 int로 사용한 pos값을 여러개 사용할 수 있게 함

 

📘 문법 예제

template<typename T>
class Stack {
private:
    T elements[100];
    int top;
public:
    void push(T element);
    T pop();
};

 

2) 다른 매개변수 사용

 

이렇게 template 안에 다른 매개변수를 넣어줄 수 있음

 

3) 초기값 세팅

 

초기값을 넣어줄 수 있음

 

🧡 class T?

사실 typename 키워드 대신 class 사용해도 동일
하지만 대부분 typename 사용하기에 typename 사용하는게 좋다!

class 사용해도 동일함...!

 

4) 별도 템플릿 작성하기

 

함수 템플릿과 마찬가지로 클래스에서도 이렇게 따로 작성할 수 있음

 

 

d. 미로 코드 수정하기

벡터 코드 수정

 

노드 코드 수정
모든 노드에 <T> 넣어주기

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com