[c++] 실행 시점 매개변수화(namespace)
C++에서는 템플릿을 사용하여 실행 시점 매개변수화(runtime parameterization)를 구현할 수 있습니다. 이를 통해 실행 시점에 데이터 형식이나 동작을 결정할 수 있습니다.
#include <iostream>
template <typename T>
void process(T value) {
// 템플릿 매개변수로 전달된 데이터 형식에 따라 동작을 처리
std::cout << "Value: " << value << std::endl;
}
int main() {
process<int>(100); // int 형식으로 호출
process<double>(3.14); // double 형식으로 호출
return 0;
}
위 예제에서 process
함수는 템플릿으로 선언되어 있으며, 실행 시점에 전달된 데이터 형식에 따라 다른 동작을 수행합니다.
또한, 네임스페이스(namespace)를 활용하여 데이터 형식을 분리하고 구조화할 수 있습니다. 네임스페이스는 독립적인 영역을 제공하여 이름 충돌을 방지하고 코드를 구조화할 수 있게 합니다.
namespace math {
const double PI = 3.14;
}
int main() {
std::cout << "PI Value: " << math::PI << std::endl;
return 0;
}
위 예제에서 math
라는 네임스페이스를 사용하여 상수 PI
를 정의하고, 해당 네임스페이스를 통해 접근합니다.
템플릿과 네임스페이스를 이용하여 C++에서 실행 시점 매개변수화와 코드 구조화를 유연하게 구현할 수 있습니다.
참고 자료
- C++ 템플릿과 네임스페이스에 관한 cppreference 문서
- “C++ Templates: The Complete Guide” 서적, David Vandervoorde and Nicolai M. Josuttis