Service: C/C++ Tipps: Grundlegendes zur vorlagenbasiserter Programmierung


Die vorlagenbasierte Programmierung (template programming) scheint auf den ersten Blick eine außerordentlich schwierige und undurchschaubare Technik zu sein. Auf der anderen Seite hat sie ein aussergewöhnliches Leistungspotential. Deswegen lohnt es sich ganz sicher, sich mit dieser Technik näher zu befassen.

An vielen Stellen wird im Zusammenhang mit vorlagenbasierter Programmierung von Meta-Programmierung gesprochen. Etwas schlichter könnte man auch 'programmiertes Programmieren' sagen. Anders gesagt: Sie haben eine Technik zur Hand, die es Ihnen ermöglicht, indirekt zu programmieren. Noch anders: Sie weisen Ihren Kompiler an, Quellcode je nach aktueller Anforderung auf die eine oder andere Art zu übersetzen.

Ein einfaches Beispiel

Nehmen wir folgende Template-Funktion:

template<typename T>
T Max(T t1, T t2)
{
    return t1 > t2 ? t1 : t2;
}

Wenn Sie diese Funktion irgendwo wie folgt aufrufen:

    double rKlein = 1.5;
    double rGross = 5.1;
    double rMax = Max(rKlein, rGross);

Dann wird das Übersetzungsprogramm folgende Version von Max() erstellen (und verwenden):

double Max(double t1, double t2)
{
    return t1 > t2 ? t1 : t2;
}

Demnach erzeugt folgender Aufruf eine entsprechend andere Version von Max():

    long lKlein = 1;
    long lGross = 5;
    long lMax = Max(lKlein, lGross);
long Max(long t1, long t2)
{
    return t1 > t2 ? t1 : t2;
}

Hinweis: Natürlich wird die vorstehende Version von Max() nicht wirklich erzeugt, sondern der entsprechende Assembler-Code. Für das Verständnis der vorlagenbasierten Programmierung ist es aber nützlich sich vorzustellen, das Übersetzungsprogramm würde vorstehenden Code erzeugen.

Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools