템플릿(template)은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와 준다. 함수나 클래스를 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 동작할 수 있게 한다. 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀.
출처: https://blockdmask.tistory.com/43 [개발자 지망생]
템플릿은 함수, 클래스 붕어빵 만드는 붕어빵 틀
재료는 객체타입
템플릿의 종류는 함수 템플릿과 클래스 템플릿의 두 가지가 있다.
함수 템플릿
여러 다른 자료형(int, long, float, double, class... )을 템플릿 인자 ('<...>' 안에 들어가는)로 받아, 함수 내부에서 활용할 수 있도록 한 것이다. 다시 말하면, 여러 다른 자료형에 대하여 같은 역할을 하는 하나의 함수 계열을 하나의 템플릿으로 표현할 수 있다는 점이다.
클래스 템플릿
클래스 템플릿은 클래스를 템플릿 변수에따라 생성할 수 있게 하는 기능이다. 클래스 템플릿은 컨테이너의 용도로 많이 쓰인다.
템플릿 특수화
특정 타입, 다른 기능수행 즉 특수화하게 하려고 따로 템플릿 정의해 만드는거
템플릿 만들 때는 템플릿 선언
template <typename T>
T라는 타입에 템플릿 선언한다는 뜻 ,
myFunc(1,3)
여기 맞게 값넣으면 알아서 함수구체화됨
"이렇게 템플릿의 구체화는 컴파일 타임에 필요한 타입에 대해서만 구체화를 하게된다. 위코드에서 구체화된 두 개의 함수 이름은 같고 시그니처만 다르므로 서로 오버로딩 관계다. 색이 다른 붕어빵~"
둘의 차이점
클래스 템플릿 사용할 때 반드시 타입 명시해줘야 함.
auto obj = MyClass<int>(3):
3써서 타입추론이 자동이뤄지는거 아닐까? 왜 타입을 강제지정할까?
[클래스 템플릿 구체화에 대한 이해]
(객체생성) 인스턴스화가 되기 전(=생성자가 호출되기 전)에 먼저 객체를 위한 메모리가 할당되어야 하는데
메모리 할당을 위해서는
생성자에 전달되는 인수의 타입을 미리 알아야함! (여기서 객체에서 사용되는 타입은 클래스 멤버 변수의 타입을 말함.)
즉 클래스의 생성자가 호출되기 전에 객체를 위한 메모리가 할당되어 있어야 한다는 거~
출처:
<대박적 설명>
https://thrillfighter.tistory.com/408
C++ 템플릿(template) 이해하기
템플릿을 사용하여 프로그래밍 하는 것을 일반화(Generic) 프로그래밍이라고도 한다. 개인적으로 C++을 제대로 공부하기 위한 첫 번째 관문은 템플릿(template) 아닐까 생각한다. 템플릿을 알아야 S
thrillfighter.tistory.com
https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B)
'웹 공부' 카테고리의 다른 글
링크드리스트 linkedlist 이해한 부분 적어보기 (0) | 2021.12.01 |
---|---|
스택stack, 힙heap 차이점 ( /스택,큐) (0) | 2021.11.30 |
C++ 객체지향프로그램 cout 입력출력 (0) | 2021.11.29 |
객체지향 절차지향 (0) | 2021.11.29 |
비주얼스튜디오 폴더 사용, 깃, 리액트 깔기 팁 (0) | 2021.11.03 |