// 템플릿.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.

//


#include "stdafx.h"


#include <iostream>


//템플릿 함수 Template Function 

template <typename 주물틀> //템플릿 문법

//타입이 바로 자료형 

//요형에 맞는걸 T로 만듬 


주물틀 합계(주물틀 _왼편 , 주물틀 _오른편)

{




return _왼편 + _오른편;




}








int main()

{




//템플릿

//주물틀 이라고 보면 된다...

//템플릿은 뭐냐면 객체지향쪽이라기보다는 자료구조와 가깝다고 보면 된다.


//우리가 특정한 클래스나 자료 그러니까 변수를 만들었는데

//그 기능들이 특정한 자료형에 귀속되지않게 만들어주는 것이다.


//더하기 함수를 만든다고치자. 정수 더하기 함수 인데 실수 던지면 잘리니까. 그걸 제대로 출력되게하려면 ...

//일단은 함수를 전역에 만들어보죠. 



int 판옥선 = 666;


int 초탐선 = 777;


float 세키부네 = 12.60f;



//합계(666, 660.666); //이렇게하면안되고 


//합계(판옥선, 세키부네); //이렇게써도안되고 



std::cout <<

합계<int>(판옥선, 세키부네) //;

<< std::endl;



std::cout <<

합계<int>(판옥선, 초탐선) //;

<< std::endl;



float 실수 = 66.66;

float 실수2 = 77.777;


std::cout <<

합계<float>(실수, 실수2) //;

<< std::endl;


std::cout <<

합계<double>(실수, 실수2) //;

<< std::endl;


//쉽죠?


//템플릿은 주물틀로서 우리가 어떤 함수를 만들었는데 여러 자료형들을 관리할수있게 만들고싶으면

//이렇게한다는거다.


//함수만 가지고 탬플릿하면 재미없다. 클래스도 탬플릿이 가능하다.







    return 0;

}