[C++] Template

2024. 4. 30. 00:46·C++
목차
  1. 템플릿
  2. 일반화 프로그래밍
  3. 템플릿 함수
  4. 클래스 템플릿

템플릿

: 함수를 찍어내기 위한 형틀

 

일반화 프로그래밍

일반적인 코드를 작성하고 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법

 

템플릿 함수

  • 모든 템플릿은 헤더
  • 컴파일 X
template <typename T>
T get_max(T x, T y){
	if(x > y) return;
	else return y;
}
  • 특수화
    • 예외 템플릿 함수
    • 우선순위 높음
template <class T>
void increase(T& v) { v += 1; }

// 템플릿 특수화
template <> 
void increase(int *& v) { v += 2; }
  • 중복
    • 템플릿은 헤더이므로 아직 만들어지지 않았음
    • 만들어진 중복 함수가 있다면 해당 함수부터 부름
template <class T>
void increase(T& v) { v += 1; }

// 템플릿 특수화
template <> 
void increase(int *& v) { v += 2; }

// 함수 중복
void increase(int *& v) { v += 3; }

 

클래스 템플릿

클래스를 찍어내는 틀
  • 클래스를 사용하는 코드에 따라서 실제 클래스를 만들어야하기 때문에 템플릿 클래스의 선언과 정의는 그 클래스를 사용하는 소스 코드에 포함되어 함께 compile 되어야 함
template<class T>
class Box {
	T data;
public:
	Box(){}
	void set(T value){ data = value; }
	T get(){ return data; }
};

int main(){
	Box<int> b1;
	b1.set(100);
	cout << b1.get() << endl;

	Box<double> b2;
	b2.set(3.14);
	cout << b2.get() << endl;
	
	return 0;
} 
  • 클래스 외부에 멤버 함수 정의할 때, 매번 템플릿 코드 선언
template<class T>
class Box {
	T data;
public:
	Box(;
	void set(T value(;
	T get();
};

template<class T>
Box<T>::Box(){}
template<class T>
void Box<T>::set(T value){ data = value; }
template<class T>
T Box<T>::get(){ return data; }
728x90
반응형

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

[C++] 컨테이너  (0) 2024.04.30
[C++] STL  (1) 2024.04.30
[C++] Exceptions  (0) 2024.04.30
[C++] Polymorphism  (0) 2024.04.30
[C++] Inheritance  (1) 2024.04.30
  1. 템플릿
  2. 일반화 프로그래밍
  3. 템플릿 함수
  4. 클래스 템플릿
'C++' 카테고리의 다른 글
  • [C++] 컨테이너
  • [C++] STL
  • [C++] Exceptions
  • [C++] Polymorphism
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    완전 탐색
    힙
    exhaustive search
    제주해커톤
    Queue
    디지랩챌린지
    Stack
    디지털혁신
    스택
    제주지역혁신플랫폼지능형서비스사업단
    heap
    기술로바꾸는세상
    큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[C++] Template
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.