Templates



  • Hallo.

    Ich habe gerade in einem Buch das Kapitel über Templates durchgelesen. Leider konnte ich dem nicht entehmen, wozu diese überhaupt gebraucht werden.
    Soweit ich es verstanden habe, ermöglicht ein Template, in Klassen und Funktionen alle Datentypen verwendbar zu machen. Stimmt das?

    Des Weiteren habe ich hier ein Beispielprogramm, das ich nicht verstehe. Kann ihn mir jemand detailliert und anfängerfreundlich auseinandernehmen?
    Danke im Voraus. 🙂

    #include <iostream.h>
    
    template <class T, int size>
    class List 
    {
    private:
      T elemente[size];
      int count;
    public:
      List();
      ~List();
    
      int getCount();
      bool addElement(T elem);
      T elementAt(int index);
    };
    
    template <class T, int size>
    List<T, size>::List()
    {
        count = 0;
    }
    
    template <class T, int size>
    List<T, size>::~List()
    {
    }
    
    template <class T, int size>
    int List<T, size>::getCount()
    {
        return count;
    }
    
    template <class T, int size>
    bool List<T, size>::addElement(T elem)
    {
        if (count == size) return false;
    
        elemente[count] = elem;
        count++;
    
        return true;
    }
    
    template <class T, int size>
    T List<T, size>::elementAt(int index)
    {
        return elemente[index];
    }
    
    void main()
    {
        List< int, 10 > list;
    
        list.addElement(6);
        list.addElement(3);
    
        cout << "Anzahl: " << list.getCount() << endl;
    }
    


  • Also, Templates braucht man so gesehen nicht wirklich, das ist schon korrekt,
    man könnte immer auch einen anderen Weg finden, allerdings wäre der oft schlechter,
    oder mit mehr Arbeit verbunden.
    Templates erleichtern einem also die Arbeit unheimlich, und deshalb braucht man sie doch.

    Die List-Templates sind ein gutes Beispiel.
    Anstelle für jeden Datentyp eine neue List-Klasse schreiben zu müssen,
    nimmst du ein list-Template, welches den Datentyp in den <> übergeben bekommt.
    Templates dienen also der Vereinfachung und steigern den Wiederverwendbarkeitsgrad
    von Quellcode.

    Devil

    [ Dieser Beitrag wurde am 13.06.2003 um 09:57 Uhr von devil81 editiert. ]



  • einfachestes beispiel:

    template<typename T>
    T max(T a, T b)
    {
    if(a<b) return b;
    return a;
    }

    das ist doch schoen, oder? 🙂

    du brauchst kein max_float, max_double, max_int, max_string, max_temperatur,... schreiben, sondern brauchst nur ein max() und schon geht max() fuer alle typen die einen op< haben.

    ein template ist eine schablone, wo du quasi jeden typen reinstecken kannst - einmal programmieren, immer verwenden.

    siehe zB
    vector<>, list<>,...
    einmal den container schreiben und dann alles reinstecken was laufen kann 🙂

    du kannst dir dazu auch mal C++ Templates - The Complete Guide geben, das ist sicher sein geld wert.


Anmelden zum Antworten