#include<iostream>
using namespace std;
//주제 3 . 함수 템플릿
//1. 메크로를 사용한 코드 생성 - 전처리기가 코드 생성을 한다.
// 전처리기는 사용자가 사용하는 타입을 모른다. 그래서 사용전에는 꼭 MAKE_MAX(필요한 타입)으로 선언해야 한다.
// 2 컴파일러를 사용한 코드 생성 - template
/*
int Max(int a, int b){
return a < b ? b : a;
}
double Max(double a, double b){
return a < b ? b : a;
}
*/
//동일한 코드가 반복된다면 코드 생성기를 사용하자.
//#define MAKE_MAX(T) T MAX(T a, T b){return a< b ? b:a;}
//MAKE_MAX(int)
//MAKE_MAX(double)
// 함수 템플릿? 템플릿 함수? 함수 템플릿으로 쓰자!
// 2 컴파일러를 사용한 코드 생성 - template
// 인스턴스화 : 템플릿이 타입이 결정되어서 진짜 함수 /클래스를 만드는 과정.
// 암시적 인스턴스화 : T를 컴파일러가 결정
// 명시적 인스턴스화 : T를 사용자가 결정!
template<typename T> T Max(T a, T b){return a< b ? b: a;}
int main(){
Max(1,2); //int Max(int, int ) 를 생성하는 효과를 가져온다
Max(1.1, 2.2); // double Max(double, double) 를 생성하는 효과를 가져온다.
// Max(65,'B'); //error!
Max<int>(65,'B'); // ok 사용자가 직접 T의 타입을 지정
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]6. 객체 지향의 탄생 배경을 STACK 소스로 알아보기 (0) | 2012.08.13 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의 ] 5. 참조변수 편 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의 ] 4. C++ 캐스팅 (0) | 2012.08.13 |
[ SSM 안드로이드 프레임워크 개발 강의 ] 2. 인라인 함수 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의 ] 1. 함수 오버로딩 (0) | 2012.08.13 |