Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 개인 바이트
- 메모리 누수
- AppSW
- Specular
- Rim Light
- 가상 바이트
- ColorGradingLutPass
- Private Bytes
- 게임 수학
- Cartoon Rendering
- Cell Look
- Cell Shader
- 프로그래밍 기초
- Three(Two) Tone Shading
- 벡터
- URP로 변경
- VR
- Toon Shader
- Windows Build
- URP
- 3d
- working set
- 작업 집합
- OculusMotionVectorPass
- Virtual Byte
- ASW(Application SpaceWarp)
- C언어
Archives
- Today
- Total
WinCNT
템플릿(Template) 본문
일반화 프로그래밍(Generic Programming)
C#, JAVA에서는 Generic이라도 한다
특정 타입에 상관 없이 동작을 만든다
템플릿은 사용하는 것은 쉽고, 만드는 것은 어렵고, 모던 C++이 얽히면 읽는 것도 어려워진다...
어디에 필요할까?
대표적인 예로는 자료 구조를 만들 때
Linked List의 예
List의 대상이 되는 자료형마다 클래스를 만들어야 한다
(int의 Linked List, char의 Linked List 등등)
자료형에 무관하게 만들 순 없을까? => 일반화 프로그래밍으로 가능!
Template의 예제
template <typename T>
T minimum(const T& lhs, const T& rhs)
{
return lhs < rhs ? lhs : rhs;
}
템플릿 특수화, 명시적 템플릿 등등 다양한 특성(?)이 존재한다
템플릿은 컴파일할 때, 타입만큼 코드가 복제된다.
컴파일 시에 특정 타입을 넣으면 그것이 구현된다(Compile-Time Polymorphism)
암시적 인터페이스를 만족하지 못하면 컴파일 에러가 난다
(실제로 코드 조각들이 만들어지지 않는다)
자료 구조(및 알고리즘)를 만들 때 정말 많이 쓰임
STL의 algorithm에는 거의 필수적으로 들어가 있다
게임에서의 예시
예시)
Factory(유닛을 만드는 건물)
템플릿을 안 쓰면
1. 하나하나 만든다
CreateUnit(Marine a);
2. 다형적으로 만든다
CreateUnit(eUnitType a);
CreateUnit // 함수 구현
{ switch (a)
...
}
템플릿을 쓰면 다음과 같이 된다
template<typename T>
CreateUnit();
CreateUnit<Marine>();
템플릿은 아니지만 예외 처리 관련 키워드
Try - Catch
ASSERT
Logger
SSS
'게임 프로그래밍(학습 내용 정리) > C++' 카테고리의 다른 글
템플릿(template) 추가 정리 (0) | 2022.03.22 |
---|---|
예외 처리(Exception Handling) (0) | 2021.12.29 |
다중 상속과 RTTI(Runtime Type Information) (0) | 2021.12.17 |
다형성(Subtype Polymorphism) (0) | 2021.12.16 |
상속 (0) | 2021.12.14 |