1 minute read

13-1 [함수 템플릿 정의]

  • 코드💻

          /*
          문제1
    
          인자로 전달되는 두 변수에 저장된 값을 서로 교환하는 SwapData라는 이름의 함수를 템플릿으로 정의해보고자 한다
          다음 Point 클래스를 대상으로 값의 교환이 이뤄짐을 확인할 수 있도록 main을 구성한다
          */
    
      #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<typename T>
      void SwapData(T& data1, T& data2) {
          T tmp = data1;
          data1 = data2;
          data2 = tmp;
      }
    
      int main(void) {
          Point pos1(1, 2);
          Point pos2(4, 5);
    
          pos1.ShowPosition();
          pos2.ShowPosition();
    
          SwapData<Point>(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<class T>
      T SumArray(const T arr[], const int len) {
          T sum = 0;
          for (int i = 0; i < len; i++) {
              sum += arr[i];
          }
          return sum;
      }
    
      int main(void) {
          int iArr[10] = { 1,2,3,4,5,6,7,8,9,10 };
          cout << "iArr Sum : " << SumArray<int>(iArr, 10) << endl;
    
          double dArr[5] = { 3.5,2.4,6.8,2.2,5.5 };
          cout << "dArr Sum : " << SumArray<double>(dArr, 5) << endl;
      }
    

Tags: ,

Categories:

Updated: