Minwoo Dev.
[C++] 윤성우의 열혈 C++ 13-1 함수 템플릿의 정의 문제풀이 본문
728x90
반응형
SMALL
문제 1
인자로 전달되는 두 변수에 저장된 값을 서로 교환하는 SwapData라는 이름의 함수를 템플릿으로 정의해보자.
그리고 다음 Point클래스를 대상으로 값의 교환이 이뤄짐을 확인할 수 있도록 main 함수를 구성해보자.
class Point{
private:
int xpos, ypos;
public:
Point(int x = 0,int y=0):xpos(x),ypos(y){}
void ShowPosition() const{
cout << '[' << xpos << ", " << ypos << ']' << endl;
}
};
정답
#include<iostream>
using namespace std;
class Point{
private:
int xpos, ypos;
public:
Point(int x = 0,int y=0):xpos(x),ypos(y){}
void ShowPosition() const{
cout << '[' << xpos << ", " << ypos << ']' << endl;
}
};
template <class T>
void SwapData(T *v1, T *v2){
T temp = *v1;
*v1 = *v2;
*v2 = temp;
}
int main(void){
Point pos1(3, 4);
Point pos2(7, 5);
SwapData(&pos1, &pos2);
pos1.ShowPosition();
pos2.ShowPosition();
return 0;
}
실행 결과
문제 2
다음은 int형 배열에 저장된 값을 모두 더해서 그 결과를 반환하는 기능의 함수이다.
int SumArray(int arr[], int len){
int sum = 0;
for (int i = 0; i < len;i++)
sum += arr[i];
return sum;
}
이 함수를 템플릿으로 정의하여, 다양한 자료형의 배열을 대상으로 합을 계산하는 예제를 작성해보자.
정답
#include<iostream>
using namespace std;
template <typename T>
T SumArray(T arr[], int len){
T sum = 0;
for (int i = 0; i < len;i++)
sum += arr[i];
return sum;
}
int main(void){
int arr1[5] = {1, 2, 3, 4, 5};
cout << SumArray(arr1, 5) << endl;
double arr2[5] = {4.2, 2.1, 2.2, 5.7, 5.3};
cout << SumArray(arr2, 5) << endl;
return 0;
}
실행 결과
728x90
반응형
LIST
'C++' 카테고리의 다른 글
[C++] 템플릿(Template), 템플릿 특수화(Specialization) (1) | 2024.07.24 |
---|---|
[C++] 윤성우의 열혈 C++ 13-2 클래스 템플릿의 정의 문제풀이 (2) | 2024.07.23 |
[C++] 포인터 연산자 오버로딩, operator*, operator-> (2) | 2024.07.23 |
[C++] operator new, operator new[] (1) | 2024.07.23 |
[C++] 배열의 인덱스 연산자 오버로딩, operator[] (0) | 2024.07.23 |