• Keine Ergebnisse gefunden

Einführung in C++ Einführung in C++

N/A
N/A
Protected

Academic year: 2021

Aktie "Einführung in C++ Einführung in C++"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in C++

Einführung in C++

(2)

Templates I Templates I

Template

Typ char Typ int

Typ float

Ausprägung

(3)

Templates II Templates II

Häufig kommt es vor, dass „gleiche“ Funktionen für verschiedene Typen programmiert werden müssen

Mit Hilfe von Templates bietet C++ die Möglichkeit, eine parametrisierte Familie verwandter Funktionen oder Klassen zu definieren:

Funktionstemplate legt die Anweisung einer Funktion fest, wobei statt eines konkreten Typs ein Parameter eingesetzt wird.

Klassentemplates legt Definition einer Klasse fest, wobei ebenfalls statt eines konkreten Typs ein

Parameter eingesetzt wird.

(4)

Templates III Templates III

Definition eines Funktiontemplates:

Eingeleitet wird ein Template stets mit dem Präfix:

Der Parameter T ist dabei ein Typname, welcher in der darauf folgenden Implementierung benützt wird.

Beispiel:

Der Parameter T bezeichnet den noch festzulegenden Typ der Variablen template<class T>

template<class T>

void swap(T& x, T& y) { T tmp(x);

x = y;

y = tmp;

}

(5)

Templates IV Templates IV

Instatiierung von Funktion-Templates:

Eine Template-Funktion wird beim ersten Aufruf

Instantiiert. Den Parameter T ermittelt der Compiler dabei aus dem Typ der übergebenen Parameter.

Beispiel:

short x = 1;    y = 5;

swap(x, y); // Template wird für den Typ „short“ erzeugt int a=10;    b = 20;

swap(a, b); // Zweite Template vom Typ „int“

(6)

Templates V Templates V

Definition eines Klassen-Templates:

Hiermit wird ein Klassentemplate MyClass<T> definiert.

Sowohl T als auch MyClass<T> werden dabei wie

„normale“ Typen behandelt.

template<class T>

class MyClass { T element;

// ...

};

(7)

Templates VI Templates VI

Instantiierung von Klassen-Templates:

Auch ein Klassen-Template wird beim ersten Aufruf Instantiiert. Die Instantiierung erfolgt implizit.

Beispiel:

MyClass<int>  instanz1(255);

Zunächst wird hierbei ein Template der Klasse „MyClass“ angelegt, wobei für alle Methoden Maschinencode vom Typ „Int“ erzeugt wird.

Erst dann kann ein Objekt „instanz1“ erzeugt werden.

Wird eine weitere Template-Classe z.B. „MyClass<short>“ angelegt, wird für alle Methoden Maschinencode vom Typ „short“ erzeugt.

(8)

Templates I Templates I

Beispiel:

template<class T>  class Stack { public:

Stack() : maxStack(255) { s = new T[maxStack]; index = 0;}

~Stack() {delete[] s;}

bool pop(T *);

private:

int maxStack; T *s; int index;

};

template<class T> bool Stack<T>::push(T set){

if (index >= maxStack) return false;

s[index++] = set  // Element einfügen return true;

}

template<class T> bool Stack<T>::pop(T *get) { if (index == 0) return false;

*get = s[index—]; // Element zurückliefern return true;

}

(9)

Templates VII Templates VII

Mehrere Template-Parameter:

Templates können auch mit mehreren Parametern definiert werden template <class X, class Y>

class MyClass {  // ....

}

Hierbei wird ein Klassentemplate vom Typ Stack<T, n> erzeugt.

Parametrisiert durch einen Typ T und einer Integer-Zahl n

Jedoch muss ein Template-Parameter nicht immer Typname sein.

Auch „nomale“ Funktionsparameter (incl. Zeiger und Referenzen) sind erlaubt.

template <class T, int n>

class Stack {  // ....

}

Referenzen

ÄHNLICHE DOKUMENTE

Dateien haben eine Reihe von Attributen (=systemseitig gespeicherte Eigenschaften), die sich der Benutzer auf Anforderung (durch das Kommando ls) ansehen

1) Jeder Regierungsstatthalter ist befugt, die Öffnungszeiten seines Regierungsstatthalte- ramtes selber festzulegen. Die Justiz-, Gemeinde- und Kirchendirektion, welche im

März 2002 mit grosser Mehrheit die Motion Leutenegger Oberholzer überwiesen hat, in der gesetzliche Grundlagen für eine volle und individualisierte Transparenz der Löhne

Es kann kaum davon ausgegangen werden, dass die Migrantinnen und Migranten durch den Besuch eines Integrationskurses innert kürzester Zeit die Integration

1 Für ein Kleinmotorrad oder Motorrad be- trägt die Grundsteuer Der Steueranteil für die ersten 1000 Kilogramm das Gesamt- gewicht eines Fahrzeugs gemäss Artikel 5 Absatz 1b

Anmerkung: Man hätte die Liste gleich in richtiger Folge Man hätte die Liste gleich in richtiger Folge aufbauen oder nachträglich umordnen können. Dann wäre aufbauen

[r]

- Arrays können als Parameter für Funktionen eingesetzt werden  Pointer - Rückgabewerte von Funktionen können indirekt Arrays sein  static - Dynamische Arraygröße