Templates

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Auf wunsch von Shadd!X' erkläre ich hier Templates etwas genauer.

      1. Was sind Templates?
      2. Wie benutze ich Templates?
      3. Wo machen Templates sinn?
      4. Einen Schritt weiter

      1. Was sind Templates?
      Mit Templates ist es möglich eine Funktion, einen Algorithmus oder eine Klasse mit mehreren verschiedenen Datentypen zu verwenden. Betrachten wir uns Beispielsweise die Funktion max. Diese ist auf jeden Datentyp anwendbar der den < Operator unterstützt. Normalerweise müsste man in C++ für jeden Datentyp eine eigene Funktion schreiben, da die Datentypen festgelegt sind.
      Beispiel:
      [cpp]
      int max (int x, int y)
      {
      if (x < y)
      return y;
      else
      return x;
      }
      float max (float x, float y)
      {
      if (x < y)
      return y;
      else
      return x;
      }
      [/cpp]
      Dies ist bei größeren Funktion oder gazen Algorithmen umständlich da jede Änderung für alle Datentypen manuell übernommen werden müssen. Hier sind Templates ein nützliches Hilfmittel.

      2. Wie benutze ich Templates?
      Im folgenden Beispiel wird der Datentyp des Rückgabewertes und der Datentyp der Parameter durch T ersetzt. (Der Kompiler generiert Automatisch die nötigen Funktionen.) Jetzt kann diese Funktion für alle Datentypen verwendet werden die den < Operator unterstützen.
      [cpp]
      template <typename T>
      T max (T x, T y)
      {
      if (x < y)
      return y;
      else
      return x;
      }
      [/cpp]
      Ein Aufruf dieser Funktion würde wie folgt aussehen:
      [cpp]
      max<int>(5, 7); //für int
      max<float>(0.8, 5.9); //für float
      [/cpp]

      Ein kleines Beispiel wie man ein Template bei einer Klasse benutzt.
      [cpp]
      template <typename T>
      class CName
      {
      public:
      T m_Value;
      T DoSomething();
      };
      [/cpp]
      Diese Klasse kann mit verschiedenen Datentypen benutzt werden. Sie enthält eine Variable(m_Value) und eine Funktion(DoSomething) des Typs T, welcher durch einen Datentyp ersetzt werden kann.

      3. Wo machen Templates sinn?
      Templates machen überall da sinn wo eine Funktion/ein Algorithmus oder eine Klasse für verschieden Datentypen gleichen Code beinhaltet.

      4. Einen Schritt weiter
      Templates sind nicht auf Datentypen beschränkt. Das heißt es können auch z.B. Zahlen übergeben werden.
      [cpp]
      template <typename T, int X>
      class CTest
      {
      public:
      T m_Value[X];
      T DoSomething()
      {
      T Value = 0;
      for (int i = 0; i < X; i++)
      {
      Value += m_Value;
      }
      return Value;
      }
      };

      CTest<int, 5> Test;
      [/cpp]
      Diese Templateklasse erstellt eine Array des Typs T mit der größe X. Die Funktion DoSomething addiert alle Werde des Arrays und gibt diesen Wert zurück.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Patafix ()