Template

headkio·2020년 9월 10일
0

C++

목록 보기
15/35
post-thumbnail

Template ?

java generic과 비슷
자료형을 중복으로 작성하지 않아도 됨
컴파일시 타입을 해석해서 작성해준다.

template <typename T> 
T Add(T a, T b)
{
  return a + b;
}

Add<int>(3, 10);
Add<float>(3.14f, 10.99f);
  • typename vs class
    차이는 사실상 없다.
    가독성을 위해 그냥 typename 쓰자

  • template의 구현체는 h에 적는다.
    컴파일 시에 template를 해석되기 때문.

FixedVector 구현 예제

사이즈(size_t N)로 고정된 Vector를 만들어 사용할 수 있다.

template <typename T, size_t N>
class FixedVector
{
  public:
    //
  private:
    //
}

template 특수화

특정한 타입에 대해선 예외적으로 처리하도록 특수화

template <class T, class Allocator>
class std::vector<T, Allocator> {}

template <class Allocator> // bool을 위한 특수화
class std::vector<bool, Allocator> {}

사용처

  1. Container에서 사용
  2. 서넛 이상의 자료형을 다룬다면 사용
profile
돌아서서 잊지말고, 잘 적어 놓자

0개의 댓글