template 템플릿ㅇㅔ 관해.. 아마두 stl
// 템플릿.. (Generic Programming의 핵심이 됨..)
// └ 코드의 재사용성을 높이고, 다양한 타입을 처리할 수 있도로 하는 기능.
// 함수나 클래스를 쓸 때, 특정 타입에 고정되지 않고 일반화할 수 있음
// *타입이 지원하는 연산에 따라 사용이 제한될 수는 있다!
// 약간 틀 같은..? 원하는 자료형에 맞춰 코드가 딱딱 튀어나오는 틀 같다고 생각할 수 있다
// 이러한 작업을 cpp의 template로 구현 가능
// template의 뜻을 어떠한 물건을 찍어내는 틀이라고 생각하면 됨.
// 내가 원하는 타입을 넣어주면 딱딱 알아서 코드를 찍어내는 틀! 이라고 생각하자..

이런식으로.. change() 라는 2개의 함수가 있을 때,
각 자료형마다 함수를 만들면 코드가 길어지니..
템플릿을 이용해 자료형을 찍어내는 틀로 만들어 하나의 change()만 만들수있도록해준다..

이렇게 하면... 자료형마다 change()를 만들지 않아도 모든 자료형에서 공통으로 동작하는 함수를 만드는게 가능
(코드 재사용성증가, 중복코드가 줄어듦 - > overloading 을 줄여준다!)
** overloading 이 뭐니?
function overloading (함수 오버로딩)이란.. 같은 이름의 함수를 여러개 정의하는 것
함수 이름이 같아도, 매개변수(인자타입)이 다르면 다른함수로 인식되는 것..
**
참고로 여기서의 template <class T>의 class는.. 그 객체지향프로그래밍에서의 class를 의미하는게 아니란다..
이게뭔소리니?
어떤 타입이든 받아들일 수 있다.. 라는 의미로 쓰인다! (그게 기본자료형이든, 사용자 정의타입이든 no상관)
따라서 T에는 int, std::string, double, class등 들어갈 수 있음.
참고로 template <class T>는 template <typename T>으로 바꿔써도 문제 없다.. (왜인지 정확히 모르겠.. 교수님한테 물어봐야지ㅎ)
어디서는 둘이 정확히 똑같다고는 하지만.. typename을 쓰기를 권장한대요..
일단 여기까지^^..
250312
'cpp(stl)' 카테고리의 다른 글
cpp6(RAII/throw/unique_ptr) 4w1 (0) | 2025.04.08 |
---|---|
cpp5(stream_iterator/vector로 파일읽기/structured binding/연산자오버로딩) (0) | 2025.03.27 |
cpp4(파일입출력/바이너리모드/저수준출력) (0) | 2025.03.19 |
cpp3(안전배열/file입출력) (0) | 2025.03.19 |
cpp1(string,string_view) (0) | 2025.03.11 |