템플릿

manmarru·2024년 2월 19일

c++

목록 보기
10/24

템플릿

  • 자료형이 정해져 있지 않고 기능만 정해져 있는 툴
    함수에서 매개변수랑 선언부에 형식이 선언돼있지 않다고 생각하면 됨
  • 매크로는 잘못 만들어도 에러가 나거나 경고가 뜨지 않아서 어디가 잘못됐는지 알기 힘들다. 하지만 템플릿은 비슷한 기능을 하면서도 에러는 컴파일러에서 잡아준다는것!
  • 템플릿은 사용할때 생성되고 다 쓰면 바로 소멸돼서 입력값을 레퍼런스를 써야 call by value 에서 원본을 조작할 수 있다.

함수 템플릿

함수처럼 생긴 템플릿

템플릿 선언

template<typename T>
T Add(t src, T tmp)
{
	return src + tmp;
}
  • 입력받는 자료형에 따라 예외처리를 하는 특수화 기능이 있다.
template<>
char* Add(char src, char tmp)
{
	cout << "문자열은 합치지 못해!" << endl;
	return false;
}

클래스 템플릿

클래스처럼 생긴 템플릿
함수가 여러 개 들어있는 경우도 있어서 부분 특수화도 된다.

템플릿 비대화

  • 템플릿을 새로운 타입으로 호출할 때마다 별도의 코드가 컴파일 타임에 생성된다.
    따라서 다양한 타입으로 호출하면 코드 크기가 커진다.
  • 꼭 필요한 타입으로만 사용하도록 하자.

0개의 댓글