Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[C++] 템플릿 본문

C++

[C++] 템플릿

Unknowns 2021. 12. 7. 17:21

템플릿

거푸집에 비유할 수 있다.

하나의 틀에서 자료형이 다른 함수/클래스를 만들 수 있는 것.

 

템플릿의 형태

 

 

 

1. 함수와 템플릿

-> 템플릿 함수

-> 컴파일 중 템플릿을 호출하는 코드라인을 컴파일할 떄

-> 컴파일러가 실제 함수의 코드를 생성한다.

-> <>안에 명시한 자료형이 함수 템플릿에서 정의한 T자리에 매칭이 된다.

 

-> 사용자가 <>를 명시하지 않을 경우 인자의 타입에 따라 템플릿 함수가 생성된다.

 

-> 템플릿 함수는 일반적으로 포인터간의 + 연산은 불가능하다

-> 하지만 템플릿의 특수화(오버로딩)를 통해서 합치는 방법이 있다.

 

 

두가지 이상의 자료형을 사용할 경우

 

 

클래스 템플릿

 

 

 

템플릿의 파일분할

-> 템플릿 클래스는 코드라인을 번역할 떄 클래스의 원형을 만들어 놓는다.

-> 헤더파일을 include하여 선언부만 가지고 왔기 떄문에 정의부의 존재가 어떻게 구성되어있는지

-> 알 수 없어 오류가 발생한다.(링커오류)

-> 결국 템플릿은 파일 분할을 하지 않는다.

 

 

 

 

템플릿의 상속

 

1. 어떤 자료형을 사용하는 클래스인지 알려주어야 한다.

 

2. T는 무엇인지 알려주어야 한다.

 

 

템플릿과 static

-> 같은 자료형을 사용하는 템플릿 클래스끼리만 static 변수를 공유한다.

-> 자료형이 달라질 경우 static 변수는 공유하지 않는다.(재 생성)

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

[C++] 지역변수 / 전역변수 / 정적변수(static)  (0) 2021.12.14
[C++] 진수  (0) 2021.12.14
[C++] 함수 객체  (0) 2021.12.07
[C++] 임시객체  (0) 2021.12.07
[C++] 연산자 오버로딩  (0) 2021.12.06