c++ 함수 템플릿 예제

C++에는 수많은 데이터 형식을 지원할 때 코드 중복을 줄이기 위해 템플릿이라는 메커니즘이 있습니다. 정수, 부동 및 이중 데이터 형식에서 작동하는 함수가 있는 C++ 함수 또는 C++ 클래스는 세 가지 데이터 형식을 모두 사용할 수 있을 만큼 유연할 수 있는 함수가 있는 단일 템플릿 함수 또는 클래스로 통합할 수 있습니다. C++의 이 메커니즘을 “템플릿”이라고 합니다. 템플릿에 두 개 이상의 인수가 있을 수 있습니까? 예, 일반 매개 변수와 마찬가지로 두 개 이상의 데이터 형식을 템플릿에 인수로 전달할 수 있습니다. 다음 예제에서는 동일을 보여 줍니다. 템플릿 사용에는 기본적인 단점이 있습니다: 이 단일 함수 정의는 많은 데이터 형식에서 작동합니다. 특히 > (연산자보다 큰)가 정의된 모든 데이터 유형과 함께 작동합니다. 함수 템플릿을 사용하면 한 함수 설명으로 변경 내용을 제한하고 코드를 더 쉽게 읽을 수 있도록 하는 것 외에도 소스 코드 파일의 공간을 절약할 수 있습니다. D::g() 내에서 Xyz 및 Pqr 이름은 템플릿 매개 변수 T에 종속되지 않으므로 비종속 이름으로 알려져 있습니다. 반면에 B 템플릿 매개 변수 T에 종속되므로 B 종속 이름이라고 합니다. C++ 템플릿에서 컴파일 타임 사례는 템플릿 인수를 통해 패턴 일치를 통해 역사적으로 수행되었습니다.

예를 들어 아래 팩터리얼 예제의 템플릿 기본 클래스는 이전에는 사용할 수 없었던 부등식 테스트가 아닌 0을 일치시켜 구현됩니다. 그러나 std:::conditional과 같은 표준 라이브러리 기능의 C++11에 도착하면 조건부 템플릿 인스턴스화를 처리하는 또 다른 보다 유연한 방법이 제공되었습니다. 함수 오버로드와 템플릿의 차이점은 무엇입니까? 함수 오버로드와 템플릿 모두 OOP의 다형성 기능의 예입니다. 함수 오버로드는 여러 함수가 유사한 작업을 수행할 때 사용되며, 여러 함수가 동일한 작업을 수행할 때 템플릿이 사용됩니다. 개인적으로 템플릿 전문화 를 사용하는 여러 가지 방법 중 하나는 문자열화입니다. 일반적으로 템플릿을 사용하여 다양한 형식의 다양한 개체를 문자열화하지만 특정 형식을 문자열화하기 위해 코드를 전문으로해야합니다.

liftdivision