[C++] 템플릿 클래스

2021. 7. 19. 18:56·C++/Basic
템플릿 클래스 헤더
template <typename T>
class Stack
{
public:
	Stack();
	bool isempty();
	...

private:
	enum {MAX = 10};
	T items[MAX];
}

template <typename T>
Stack<T>::Stack()
{
	...
}

template <typename T>
bool Stack<T>::isempty()
{
	...
}

 

템플릿 클래스 사용
Stack<int> kernels;
Stack<string> kernels2;

명시적으로 어떤 데이터형을 사용할 것인지 제공해야한다.

 

 

템플릿의 융통성
template <typename T>
class Array
{
	...
};

template <typename T>
class GrowArray : public Array<T> 	//상속
{
	...
};

상속을 시킬 수 있다.

 

template <typename T1, typename T2 = int>
class Array
{
	...
};


Array<int>	//int, int
Array<int, double> //int, double

디폴트 데이터형 매개변수를 가질 수 있다.

 

 

매개변수 템플릿
template <template<typename T> typename Thing>
class Test
{
private:
    Thing<int> s1;
    Thing<double> s2;
    ...
};

int main()
{
	Test<Stack> nebula;
    //Stack은 template <template<typename T> typename Thing>과 일치 해야된다.
}

 

템플릿 클래스에 대한 바운드 템플릿 프렌드 함수
template <typename T> void report (T &);	//선언
template <typename T> void counts ();	//선언

template <class TT>
class HasFriend
{
	friend void counts<TT> ();

	friend void report<> (HasFriend<TT> &);	//아래와 같은 코드이다.
    //friend void report<HasFriend<TT>> (HasFriend<TT> &);
};

template <typename T>
void counts() {...}	//정의

template <typename T>
void report(T & hf) {...}	//정의

- 각각 데이터형에 맞는 프렌드를 얻게 된다.

- 클래스 바깥에서 선언된 템플릿의 특수화들이다.

 

 

템플릿 클래스에 대한 언바운드 템플릿 프렌드 함수
template <class TT>
class ManyFriend
{
	template<typename C, typename D> friend void show2(C &, D &);
};

template <typename C, typename D> void show2(C & c, D & d)
{
	...
}

int main()
{
	ManyFriend<int> h1(10);
	ManyFriend<int> h2(20);

	show(h1, h2);
}

- 프로그램에서 show2(h1, h2)에 대한 호출은 아래와 같다.

void show2<ManyFriend<int> &  ManyFriend<int> &> (ManyFriedn<int> & c, ManyFriend<int> & d);

 

 

 

 

 

참고 사이트 : https://min-zero.tistory.com/entry/C-STL-1-2-%ED%85%9C%ED%94%8C%EB%A6%BF-%ED%81%B4%EB%9E%98%EC%8A%A4-%ED%85%9C%ED%94%8C%EB%A6%BFclass-template

 

[C++ STL] 1-2. 템플릿 - 클래스 템플릿(class template)

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 클래스 템플릿(class template) 함수 템플릿이 기능만 정의되고 타입이 정의되지 않

min-zero.tistory.com

 

저작자표시 (새창열림)

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

[C++] 내포 클래스  (0) 2021.07.23
[C++] 프렌드 클래스  (0) 2021.07.22
[C++] 다중 상속과 가상 기초 클래스  (0) 2021.07.14
[C++] public 다형 상속  (0) 2021.07.06
[C++] 클래스의 상속  (0) 2021.07.05
'C++/Basic' 카테고리의 다른 글
  • [C++] 내포 클래스
  • [C++] 프렌드 클래스
  • [C++] 다중 상속과 가상 기초 클래스
  • [C++] public 다형 상속
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Java
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    알고리즘
    dfs
    백준
    Java
    위클리 챌린지
    오블완
    SpringSecurity
    JWT
    c++ 기초 플러스
    프로그래머스
    dp
    티스토리챌린지
    spring
    JPA
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] 템플릿 클래스

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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