int Sum(int iA, int iB)
{
return iA + iB;
}
float Sum(float fA, float fB)
{
return fA + fB;
}
double Sum(double dA, double dB)
{
return dA + dB;
}
void main(void)
{
cout << Sum(10, 20) << endl;
cout << Sum(40.3425f, 20.1312f) << endl;
cout << Sum(20.51, 30.15) << endl;
cout << Sum(10, 20.4242f) << endl;
}
//템플릿
템플릿선언<자료형>
오피스같은것들 에서 서식으로 쓴다 어떤 문서를 만들기 위한 틀로서
코드에서 일정한 구조하 있고 사용자가 데이터만 입력하면 되는 그런형태로 만들수있게 해준다
1. 기능은 이미 결정되어있다
2. 데이터의 형식은 정해져있지않다
////////////////////////////////////////////////////
template<class T>
class CObj
{
private:
T thp;
public:
//템플릿으로 들어온 자료형에 맞도록 멤버를 만들고 인터페이스 함수도 만들수있다
void SetHp(T _hp)
{
thp =_hp;
}
T GetHp(void)
{
return thp;
}
public:
Cobj(void){;}
CObj(T _t)
{
thp = _t;
}
};
void main(void)
{
//클래스 템플릿으로 객체 만듬
CObj<int> obj(10);
obj.SetHp(10;
cout << obj.GetHp() << endl;
//이것 자체가 클래스는 아니고 템플릿을 사용해서 객체를 만들면
//타입에 해당하는 클래스가 만들어지고 그 클래스를 통해서 객체를 만드는것이다
//함수 템플릿은 함수를 수동으로 오버로딩 할때와 같이 내부적으로 함수를 여러개 생성하는것이다
//템플릿만 만들었을때는 함수가 아니다
}
//클래스를 템플릿으로 만들고 헤더랑 분리해서 컴파일할때 유효성 선언을 다시 해야 한다
//////////////////////////////
Test.h
#pragma once
template<typename T>
class CTest
{
private:
T m_tValue;
T GetValue(void);
void Set(T _T);
public:
CTest(void);
CTest(T _t){m_tValue = _T;}
~CTest(void);
};
////////////////////////////////////////
Test.cpp
#include "Test.h"
template<typename T>
CTest<T>::CTest(void)
{
}
template<typename T>
CTest<T>::~CTest(void)
{
}
template<typename T>
T CTest<T>::GetValue(void)
{
}
template<typename T>
void CTest<T>::SetValue(T _t)
{
}
//선언부와 구현부를 분리시킬수는 있는데..
//템플릿 선언 유효성이 있기 때문에
//매번 위와같이 다시 템플릿 선언을 해야 한다.
//귀찮아진다
'IT 컴퓨터_프로그램 > c++' 카테고리의 다른 글
STL 기초 학습 (0) | 2015.10.20 |
---|---|
메크로함수 (0) | 2015.10.18 |
연산자 오버로딩 (0) | 2015.10.18 |
오버라이딩_virtual2 (0) | 2015.10.13 |
오버라이딩_virtual (0) | 2015.10.13 |
댓글