SW/C++

C++ : 템플릿 함수 : Math 예제 구현해보기

얇은생각 2020. 4. 23. 07:30
반응형

C++ : 템플릿 함수 : Math 예제 구현해보기

 

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 라이브러리에 함수에 대해 알아보도록 하겠습니다. 물론 이러한 함수는 템플릿으로 구현이 되어 있습니다. 다양한 타입에 대해서 템플릿으로 이러한 방식으로 구현하면, 제약없이 구현이 가능하다는 것을 알게 되었습니다. 

다양한 타입에 지원되야할 템플릿 함수가 필요하다면 위와 같은 방식으로 구현하도록 노력할 생각입니다. 해당 원본 코드 샘플은 아래 경로에서 확인하실 수 있습니다.

 

https://github.com/POCU/COMP3200CodeSamples/tree/master/09

 

POCU/COMP3200CodeSamples

Code samples for COMP3200. Contribute to POCU/COMP3200CodeSamples development by creating an account on GitHub.

github.com

반응형