SlideShare a Scribd company logo
함수 템플릿 ( Function Template )
FaceBook Group "코딩의 아침"
Self Study & Sharing
Ø 템플릿(Template) 이란?
한자로 形(모양형)板(널판지판) !
간단히 말하면 일정한 형태로 만든 모양을 의미한다.
우리는 이러한 형태를 만들어 놓고,
필요할 때 마다 이 형태을 이용해서 같은 모양을 손쉽게 만들어 낼 수 있다.
Ø 템플릿(Template) 이란?
겨울에 자주 볼 수있는
맛있는 붕어빵을 생각해 보자.
붕어빵 틀에서 나온 겉모습은 똑같지만,
반죽(내용물)에 따라서, 다양한 맛의 붕어빵이 나오게 된다.
Ø 템플릿(Template) 이란?
이제 대충 템플릿이라는 것에 감이 오는가?
그대가 이해한것이 맞다!
(이해 한거죠?... ㅎㅎ)
템플릿이란? 일정한 형태를 만들어 놓고.
당신이 원하는 다양한 데이터 타입을 넣는 방식인 것이다!
뿡어빵 틀에 반죽만 다르게하여 찍어내듯이~!
녹차 붕어빵
추억의 붕어빵
석류 붕어빵
반죽에 따라 ~ !!
Ø 템플릿 함수 만들기 (1)
템플릿 함수를 만들기 전에!
두 매개변수를 더한 값을 출력하는 간단한 함수를 만들어 보자.
(생각하기) 정수덧셈을 할꺼니까~~ 자료형을 인트형으로 하면 되겠지?
void Sum(int iData1, int iData2)
{
cout << iData1 + iData2 <<endl;
}
앗.. 실수끼리도 덧셈하고 싶어졌어.. 함수오버로딩으로 또 만들어야 하네?? ㅜㅜ
계속 만들기 귀찮다!!! 모든 자료형을 받는 함수를 만들 수 없을까??
Ø 템플릿 함수 만들기 (2)
더한다는 기능은 그대로 두고, 넣는 데이터 타입만 그때그때 바뀐다면~
융통성있는 정말 편한 함수가 된다. 이것이 템플릿함수다!
서론이 길었다..., 이제 정말 템플릿 함수를 만들어 보자.
template < typename T >
T Sum(T Data1, T Data2)
{
return Data1 + Data2;
}
정하지 않은 Type이란 의미
지금은 자료형 타입을
결정하지 않겠다.
그것을 T라고 말하겠다.
< >안에 의미대로
실제 사용할 때 자료형을
정해준다.
Ø 템플릿 함수 사용하기 (1)
#include <iostream>
using namespace std;
template <typename T>
void Sum(T Data1, T Data2)
{
cout << Data1 + Data2 <<endl;
}
void main(void)
{
Sum<int>(3, 4);
Sum<float>(3.4f, 4.4f);
cout << "==================" <<endl;
Sum(3, 4);
Sum(3.4, 4.4);
}
<출력결과>
ⓐ 타입을 명시해도 되며,
ⓑ 타입을 명시하지 않아도
지금처럼,
결과는 같을 수 있으나,
어떤 상황에는 원치 않는
결과를 초래 할 수도 있다.
ⓐ
ⓑ
Ø 템플릿 함수 사용하기 (2)
#include <iostream>
using namespace std;
template <typename T>
void Sum(T Data1, T Data2)
{
cout << Data1 + Data2 <<endl;
}
void main(void)
{
Sum(3, 4.4f);
}
지금 상황이 원치않는 상황이다.
7.4가 출력될것이라 예상했건만....
(에러를 예상한 그대! 센스있군요~)
이렇게, 타입을 명시하지 않고
정수와 실수끼리의 덧셈을 진행하려고
하는 순간! 컴파일러는 에러를 토해낸다.
타입을 명시해주는 습관을 갖자.
error C2782: 'T Sum(T,T)' : 템플릿 매개 변수 'T'이(가) 모호합니다.
Ø 템플릿 함수 사용하기 (3)
#include <iostream>
using namespace std;
template <typename T1, typename T2>
void Sum(T1 Data1, T2 Data2)
{
cout << Data1 + Data2 <<endl;
}
void main(void)
{
Sum<float, int>(3.3f, 4);
Sum<float, float>(3.3f, 4.4f);
cout << "==============" <<endl;
Sum(3.3, 4);
Sum(3.3, 4.4);
}
템플릿의 인수 타입을
여러가지로 만들 수 있다.
사용할 경우에도 타입을 명시해주거나
해주지 않는다 하여도 이제 자~알
출력된다.
그런데! 결과 데이터의 변화가 생겼다?
(출력결과는 같은데? 생각해보라.ㅎㅎ)
난, 처음부터 2가지 타입을 정해 줄꺼야!!!
FaceBook Group "코딩의아침" www.jusinacademy.com
>> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<

More Related Content

PPTX
C# 세미나 12회차
PPTX
이펙티브 C++ 789 공부
PDF
RPG Maker와 Ruby로 코딩 시작하기 Day 2
PPTX
가능한 C++ 스타일의 캐스트를 즐겨 쓰자
PDF
Java
PDF
타임리프 폼과 어노테이션.Key
PPTX
Hacosa js study 7th
PDF
안드로이드기초
C# 세미나 12회차
이펙티브 C++ 789 공부
RPG Maker와 Ruby로 코딩 시작하기 Day 2
가능한 C++ 스타일의 캐스트를 즐겨 쓰자
Java
타임리프 폼과 어노테이션.Key
Hacosa js study 7th
안드로이드기초

Similar to [C++]함수템플릿(Function template) (20)

PPTX
C++ Template/STL study
PPTX
이펙티브 C++ (7~9)
PPTX
C++11
PPTX
Effective c++ 4
PPTX
[아꿈사] The C++ Programming Language 13장 템플릿
PDF
Template at c++
PDF
7 8 1
PDF
Effective c++ chapter7_8_9_dcshin
PPTX
Effective C++ Chaper 1
PDF
2013 C++ Study For Students #1
PDF
HI-ARC PS 101
PPTX
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
PPTX
튜터링 #10 20120416
PDF
Effective C++ Chapter 1 Summary
PDF
PDF
Effective c++ chapter 1,2 요약
PPTX
Chapter7~9 ppt
PPTX
Effective c++chapter4
PDF
02장 자료형과 연산자
PPTX
Effective c++ chapter 7,8
C++ Template/STL study
이펙티브 C++ (7~9)
C++11
Effective c++ 4
[아꿈사] The C++ Programming Language 13장 템플릿
Template at c++
7 8 1
Effective c++ chapter7_8_9_dcshin
Effective C++ Chaper 1
2013 C++ Study For Students #1
HI-ARC PS 101
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
튜터링 #10 20120416
Effective C++ Chapter 1 Summary
Effective c++ chapter 1,2 요약
Chapter7~9 ppt
Effective c++chapter4
02장 자료형과 연산자
Effective c++ chapter 7,8
Ad

More from jusingame (6)

PDF
[C언어] 반복문_for문
PDF
[C언어] 반복문 (While)
PDF
[if&switch] 분기문
PDF
[C++ ]연산자오버로딩
PDF
[C++] 상속과 캐스팅(Inheritance & casting)
PDF
[C언어]함수오버로딩과오버라이딩
[C언어] 반복문_for문
[C언어] 반복문 (While)
[if&switch] 분기문
[C++ ]연산자오버로딩
[C++] 상속과 캐스팅(Inheritance & casting)
[C언어]함수오버로딩과오버라이딩
Ad

[C++]함수템플릿(Function template)

  • 1. 함수 템플릿 ( Function Template ) FaceBook Group "코딩의 아침" Self Study & Sharing
  • 2. Ø 템플릿(Template) 이란? 한자로 形(모양형)板(널판지판) ! 간단히 말하면 일정한 형태로 만든 모양을 의미한다. 우리는 이러한 형태를 만들어 놓고, 필요할 때 마다 이 형태을 이용해서 같은 모양을 손쉽게 만들어 낼 수 있다.
  • 3. Ø 템플릿(Template) 이란? 겨울에 자주 볼 수있는 맛있는 붕어빵을 생각해 보자. 붕어빵 틀에서 나온 겉모습은 똑같지만, 반죽(내용물)에 따라서, 다양한 맛의 붕어빵이 나오게 된다.
  • 4. Ø 템플릿(Template) 이란? 이제 대충 템플릿이라는 것에 감이 오는가? 그대가 이해한것이 맞다! (이해 한거죠?... ㅎㅎ) 템플릿이란? 일정한 형태를 만들어 놓고. 당신이 원하는 다양한 데이터 타입을 넣는 방식인 것이다! 뿡어빵 틀에 반죽만 다르게하여 찍어내듯이~! 녹차 붕어빵 추억의 붕어빵 석류 붕어빵 반죽에 따라 ~ !!
  • 5. Ø 템플릿 함수 만들기 (1) 템플릿 함수를 만들기 전에! 두 매개변수를 더한 값을 출력하는 간단한 함수를 만들어 보자. (생각하기) 정수덧셈을 할꺼니까~~ 자료형을 인트형으로 하면 되겠지? void Sum(int iData1, int iData2) { cout << iData1 + iData2 <<endl; } 앗.. 실수끼리도 덧셈하고 싶어졌어.. 함수오버로딩으로 또 만들어야 하네?? ㅜㅜ 계속 만들기 귀찮다!!! 모든 자료형을 받는 함수를 만들 수 없을까??
  • 6. Ø 템플릿 함수 만들기 (2) 더한다는 기능은 그대로 두고, 넣는 데이터 타입만 그때그때 바뀐다면~ 융통성있는 정말 편한 함수가 된다. 이것이 템플릿함수다! 서론이 길었다..., 이제 정말 템플릿 함수를 만들어 보자. template < typename T > T Sum(T Data1, T Data2) { return Data1 + Data2; } 정하지 않은 Type이란 의미 지금은 자료형 타입을 결정하지 않겠다. 그것을 T라고 말하겠다. < >안에 의미대로 실제 사용할 때 자료형을 정해준다.
  • 7. Ø 템플릿 함수 사용하기 (1) #include <iostream> using namespace std; template <typename T> void Sum(T Data1, T Data2) { cout << Data1 + Data2 <<endl; } void main(void) { Sum<int>(3, 4); Sum<float>(3.4f, 4.4f); cout << "==================" <<endl; Sum(3, 4); Sum(3.4, 4.4); } <출력결과> ⓐ 타입을 명시해도 되며, ⓑ 타입을 명시하지 않아도 지금처럼, 결과는 같을 수 있으나, 어떤 상황에는 원치 않는 결과를 초래 할 수도 있다. ⓐ ⓑ
  • 8. Ø 템플릿 함수 사용하기 (2) #include <iostream> using namespace std; template <typename T> void Sum(T Data1, T Data2) { cout << Data1 + Data2 <<endl; } void main(void) { Sum(3, 4.4f); } 지금 상황이 원치않는 상황이다. 7.4가 출력될것이라 예상했건만.... (에러를 예상한 그대! 센스있군요~) 이렇게, 타입을 명시하지 않고 정수와 실수끼리의 덧셈을 진행하려고 하는 순간! 컴파일러는 에러를 토해낸다. 타입을 명시해주는 습관을 갖자. error C2782: 'T Sum(T,T)' : 템플릿 매개 변수 'T'이(가) 모호합니다.
  • 9. Ø 템플릿 함수 사용하기 (3) #include <iostream> using namespace std; template <typename T1, typename T2> void Sum(T1 Data1, T2 Data2) { cout << Data1 + Data2 <<endl; } void main(void) { Sum<float, int>(3.3f, 4); Sum<float, float>(3.3f, 4.4f); cout << "==============" <<endl; Sum(3.3, 4); Sum(3.3, 4.4); } 템플릿의 인수 타입을 여러가지로 만들 수 있다. 사용할 경우에도 타입을 명시해주거나 해주지 않는다 하여도 이제 자~알 출력된다. 그런데! 결과 데이터의 변화가 생겼다? (출력결과는 같은데? 생각해보라.ㅎㅎ) 난, 처음부터 2가지 타입을 정해 줄꺼야!!!
  • 10. FaceBook Group "코딩의아침" www.jusinacademy.com >> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<