승쨩개발공부
[C++] 템플릿 본문
템플릿
거푸집에 비유할 수 있다.
하나의 틀에서 자료형이 다른 함수/클래스를 만들 수 있는 것.
템플릿의 형태
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 |