C++ 공부

C++언어 기초 - 6. 템플릿의 개념

Client Side 2025. 8. 26. 18:30

함수 오버로딩

  • 동일한 이름의 함수를 여러 개 정의하는 것.
  • C++에서는 동일한 이름의 함수를 여러개 정의할 수 있다. 함수 이름과 매개변수 타입 정보를 함께 사용하여 구분하기 때문.
  • 함수 이름 구분을 위해 내부적으로 고유한 이름을 부여하는 것을 네임맹글링(Name Mangling) 이라고 한다.
  • 명확히 구분되어야 한다 (ex: 매개변수 타입이 다르거나, 매개변수의 개수가 다른 경우)
  • 오버로딩이 되지 않는 경우
    • 타입 변환이 가능한 매개변수로 인해 두 개 이상의 오버 로딩된 함수가 호출 후보가 되는 경우
    • 디폴트 매개변수로 인해 함수 호출 형태가 중복되는 경우
    • 매개변수의 타입만 포인터와 배열로 다른 경우 매개변수의 타입만 포인터와 배열로 다른 경우
  • 함수 오버로딩의 순서
    • 정확한 배개변수 타입 일치 -> 타입 승격 변환 -> 표준 타입 변환 -> 사용자 정의 타입 변환

 

템플릿

  • 타입에 관계 없이 일반화된 코드를 작성하기 위한 문법.
  • template <typename T>
  • 어떤 타입이 올지 모르겠으나, 그 타입을 T 라고 부르겠다는 의미. 이후 일반화하려는 타입 자리에 실제 타입 대신 T를 사용하면 된다.

템플릿 클래스

함수뿐만이 아니라, 클래스도 템플릿을 사용해 일반화 할 수 있다.