Mit class Hund : public Tier erbt eine Klasse. Methoden, die Unterklassen anders umsetzen sollen, markierst du in der Basisklasse als virtual und überschreibst sie mit override. Templates (template <typename T>) schreiben Code einmal für viele Typen.
Fehler meldest du mit throw und fängst sie mit try/catch ab, zum Beispiel std::runtime_error.
#include <iostream>
#include <stdexcept>
class Tier {
public:
virtual std::string laut() const { return "..."; }
virtual ~Tier() = default;
};
class Hund : public Tier {
public:
std::string laut() const override { return "Wuff"; }
};
template <typename T>
T maximum(T a, T b) { return a > b ? a : b; }
int main() {
Hund h;
std::cout << h.laut() << " " << maximum(3, 9) << "\n";
try { throw std::runtime_error("Fehler!"); }
catch (const std::exception& e) { std::cout << e.what() << "\n"; }
}Merke
virtual+overridefür PolymorphieTemplates: Code für viele Typen
throw/try/catchfür Fehler
Aufgabe
Schreibe eine Template-Funktion `kleinstes`, die das Minimum zweier Werte liefert.