오버로딩된 함수를 템플릿으로 변경해 봅시다.
우리는 타입이 동일한 두 개의 인자를 받고 이를 더해서 반환하는 템플릿 함수를 구현해야 합니다.
기존에 제공된 오버로딩 된 함수를 분석해서 하나의 템플릿 함수로 구현하시면 됩니다.
//템플릿 함수로 변경해야 할 오버로딩 된 함수
#include <iostream>
using namespace std;
//아래 3개의 함수를 하나의 템플릿 함수로 통합하세요
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
std::string add(const std::string& a, const std::string& b) {
return a + b;
}
//아래 테스트 코드는 변역하지 마세요
int main() {
// 정수 더하기
cout << "3 + 5 = " << add(3, 5) << endl;
// 실수 더하기
cout << "2.5 + 4.3 = " << add(2.5, 4.3) << endl;
// 문자열 합치기
cout << "\"Hello, \" + \"World!\" = " << add(string("Hello, "), string("World!")) << endl;
// 아래 코드는 컴파일 에러가 발생해야 함
// cout << add(true, false) << endl;
return 0;
}
#include <iostream>
using namespace std;
//아래 3개의 함수를 하나의 템플릿 함수로 통합하세요
//int add(int a, int b) {
// return a + b;
//}
//
//double add(double a, double b) {
// return a + b;
//}
//
//std::string add(const std::string& a, const std::string& b) {
// return a + b;
//}
template<typename T>
T add(T a, T b)
{
return a + b;
}
//아래 테스트 코드는 변역하지 마세요
int main()
{
// 정수 더하기
cout << "3 + 5 = " << add(3, 5) << endl;
// 실수 더하기
cout << "2.5 + 4.3 = " << add(2.5, 4.3) << endl;
// 문자열 합치기
cout << "\"Hello, \" + \"World!\" = " << add(string("Hello, "), string("World!")) << endl;
// 아래 코드는 컴파일 에러가 발생해야 함
cout << add(true, false) << endl; // 에러가 발생안하고 1이 출력된다.
return 0;
}
요구 사항중 맨 아래줄인 cout << add(true, false) << endl; 에서 컴파일 에러가 떠야한다고 하는데 오류가 발생하지 않아서 뭐가 틀렸나 하고 답지를 봤지만 똑같다. 답지의 오류코드의 주석을 풀고 그대로 실행해도 오류가 발생하지 않는다.
'숙제' 카테고리의 다른 글
C++ 숙제(SOLID원칙을 적용한 Student 클래스 구현) (0) | 2025.08.21 |
---|---|
C++ 숙제(반복자를 활용하여 각 컨테이너를 순회하기) (0) | 2025.08.20 |
C++ 숙제(메모리 누수 발생 코드 분석하고 보완하기, 스마트 포인터를 활용한 로그분석기 구현) (0) | 2025.08.19 |
C++ 2번 과제(전직 시스템과 전투 시스템) (0) | 2025.08.18 |
C++ 1번 과제(상태창 구현하기) (2) | 2025.08.15 |