C++ Chapter 13.1 : 함수 템플릿

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 13. 템플릿 : 함수 템플릿

🔔 템플릿을 쓰기 전

int getMax(int x, int y)
{
    return (x > y) ? x : y;
}

double getMax(double x, double y)
{
    return (x > y) ? x : y;
}

float getMax(float x, float y)
{
    return (x > y) ? x : y;
}
  • 리턴 타입과 매개 변수의 타입이 다르다는 것 빼곤 같으므로 일반화 할 순 없을까? 👉 Template


🔔 함수 템플릿

일반화

템플릿은 컴파일 타임에 결정되는 것만 쓸 수 있다.

template <typename T>
T getMax (T x, T y)
{
    return (x > y) ? x : y;
}
  • T 자리에 int, double, 혹은 객체 타입 등등을 넣어 특정 타입으로 구체화 하면 된다.
    • T 자리에 들어갈 수 있는 것들은 전부 컴파일 타임에 결정되야 한다.

구체화

int main()
{
    std::cout << getMax(1, 2) << std::endl;   // T가 int 로 구체화 : int getMax(int x, int y)
    std::cout << getMax(3.14, 1.1592) << std::endl;  // T가 doule로 구체화 : double getMax(double x, double y)
    std::cout << getMax(1.0f, 3.4f) << std::endl; // T가 float으로 구체화 : float getMax(float x, float y)
    std::cout << getMax('a', 'c') << std::endl; // T가 char로 구체화 : char getMax(char x, char y)

    std::cout << getMax(Cents(5), Cents(9)) << std::endl;  // T가 Cents 객체로 구체화 : Cents getMax(Cents x, Cents y)
}
  • std::cout « getMax(Cents(5), Cents(9))
    • 이때 Cents 클래스에 <<< 연산자에 대해 오버로딩이 되어 있어야 함.
      • std::cout <<
      • return (x > y)? x : y


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

댓글남기기