Überschreiben einer Template-Funktion

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

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.