Wir haben gerade etwas über das Überladen von Funktionen gelernt, das mehrere Datentypen verarbeiten kann, obwohl sie denselben Namen haben. Es wäre großartig, wenn der Code optimiert und mit Vorlagen versehen werden könnte. Zu diesem Zweck stellt C++ einen Funktionsvorlagenmechanismus bereit, der die Wiederverwendbarkeit von Code erheblich verbessert.
Mit einer Funktionsvorlage können Sie eine allgemeine Funktion erstellen, die mehrere formale Parameter unterstützt. Verwenden Sie die Schlüsselwortvorlage, um es in der folgenden Form zu definieren:
template<Klassentypname 1, Klassentypname 2...> Rückgabewert Funktionsname (Spalte der formalen Parameterliste) Vorlagenparameterliste {Funktionskörper}
Zur Erläuterung: In dieser allgemeinen Form ist die Vorlage in der ersten Zeile <Klassentypname 1, Klassentypname 2...> eine Deklarationsanweisung . Die Vorlage ist das Schlüsselwort, das die Vorlagenfunktion definiert Die vorangehenden Klammern verwenden die zu definierende Klasse (oder den zu definierenden Typnamen). Anschließend folgt die definierte Funktionsvorlage. Denken Sie daran, keine weiteren Anweisungen in der Mitte hinzuzufügen, da sonst ein Fehler gemeldet wird!
Schauen wir uns unten ein konkretes Beispiel an!
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<add(10,20)<<endl;;cout<<add(3.14,5.98)<<endl;cout<<add('A',2)<<endl;return0;}
Das Obige ist eine Vorlage für eine Additionsfunktion. Sie können sehen, dass wir eine Additionsfunktionsvorlage definiert haben und die darin enthaltenen Variablentypen durch T1 und T2 ersetzt wurden.
Wenn wir die Hauptfunktion tatsächlich aufrufen, rufen wir sie dreimal auf und übergeben drei verschiedene Typen. Die T1- und T2-Typen in der Vorlagenfunktion werden entsprechend dem tatsächlich übergebenen Typ in bestimmte Typen geändert. Diese Transformation wird aufgerufen eine Instanz der Vorlagenänderung.
Dann führen wir das Programm aus und können sehen, welche Typen T1 und T2 jedes Mal aufgerufen werden, wie viele Bytes es sind und welches Ergebnis die Summe ergibt. Der Laufeffekt ist wie folgt:
Sie können den Code Zeile für Zeile verstehen und das Experiment selbst durchführen.