Überschreiben einer Template-Funktion
Nach oben zu Funktions-Templates (Übersicht) - Index
Das Beispiel wird Funktions-Template (oder auch generische Funktion) genannt. Eine spezielle Instanzerzeugung des Funktions-Template heißt Template-Funktion. Die Instanzerzeugung einer Template-Funktion erfolgt, wenn Sie die Funktionsadresse übernehmen oder die Funktion mit definierten (d.h. nicht-generischen) Datentypen aufrufen. Sie können die Generierung einer Template-Funktion für einen speziellen Typ mit einer Nicht-Template-Funktion überschreiben:
#include <string.h>
char *max(char *x, char *y){
return(strcmp(x,y) > 0) ? x : y;
}
Wenn Sie die Funktion mit String-Argumenten aufrufen, wird sie anstelle der automatischen Template-Funktion ausgeführt. In diesem Fall verhinderte der Aufruf der Funktion einen sinnlosen Vergleich zwischen zwei Zeigern.
Nur einfache Argument-Konvertierungen werden mit Template-Funtionen ausgeführt, die vom Compiler genriert wurden.
Die Argumenttypen einer Template-Funktion müssen alle formalen Argumente des Template abdecken. Wenn dies nicht erfolgt, gibt es keine Möglichkeit, beim Aufruf der Funktion die tatsächlichen Werte des nicht verwendeten Template-Argumente zu ermitteln.