반응형
Math.h
#pragma once
namespace samples
{
namespace Math
{
template <typename T>
static T Add(T value1, T value2)
{
return value1 + value2;
}
template <typename T>
static T Divide(T value1, T value2)
{
return value1 / value2;
}
template <typename T>
static T Max(T value1, T value2)
{
return value1 < value2 ? value2 : value1;
}
template <typename T>
static T Min(T value1, T value2)
{
return value1 < value2 ? value1 : value2;
}
template <typename T>
static T Multiply(T value1, T value2)
{
return value1 * value2;
}
}
}
Math.cpp
#include "Math.h"
namespace samples
{
namespace Math
{
template <typename T>
T Add(T value1, T value2)
{
return value1 + value2;
}
template <typename T>
T Divide(T value1, T value2)
{
return value1 / value2;
}
template <typename T>
T Max(T value1, T value2)
{
return value1 < value2 ? value2 : value1;
}
template <typename T>
T Min(T value1, T value2)
{
return value1 < value2 ? value1 : value2;
}
template <typename T>
T Multiply(T value1, T value2)
{
return value1 * value2
}
}
}
MathExample.cpp
#include <iostream>
#include "Math.h"
#include "MathExample.h"
using namespace std;
namespace samples
{
void MathExample()
{
int value1 = 15;
int value2 = 3;
cout << Math::Add(value1, value2) << endl;
cout << Math::Divide(value1, value2) << endl;
cout << Math::Multiply(value1, value2) << endl;
cout << Math::Max(value1, value2) << endl;
cout << Math::Min(value1, value2) << endl;
}
}
Math 라이브러리에 함수에 대해 알아보도록 하겠습니다. 물론 이러한 함수는 템플릿으로 구현이 되어 있습니다. 다양한 타입에 대해서 템플릿으로 이러한 방식으로 구현하면, 제약없이 구현이 가능하다는 것을 알게 되었습니다.
다양한 타입에 지원되야할 템플릿 함수가 필요하다면 위와 같은 방식으로 구현하도록 노력할 생각입니다. 해당 원본 코드 샘플은 아래 경로에서 확인하실 수 있습니다.
반응형
'SW > C++' 카테고리의 다른 글
C++ : lvalue, rvalue, move, 이동생성자 : 개념, 장점, 필요성 (0) | 2020.04.25 |
---|---|
C++ : 템플릿 : 특수화, 장점과 단점, 베스트 프랙티스 (0) | 2020.04.24 |
C++ : 템플릿 활용 : 고정형 사이즈 벡터 만드는 예제 (0) | 2020.04.22 |
C++ : 클래스 템플릿 : 예제, 사용법, 구현 방법, 추천 (0) | 2020.04.21 |
C++ : 템플릿 프로그래밍 : 기본 개념, 예제, 활용방법, 주의사항 (0) | 2020.04.20 |