class CWarteschlangeMitStreuung : public CWarteschlange { public: int streuung() const; };
int CWarteschlangeMitStreuung::streuung() { int streuung = 0; if (anzahl > 0) { int summe = 0; int index = aeltestes; for (int i = 0; i < anzahl; i++) { summe += inhalt[index]; index = (index + 1) % laenge; } int durchschnitt = summe / anzahl; index = aeltestes; for (int i = 0; i < anzahl; i++) { int differenz = inhalt[index] – durchschnitt; if (differenz < 0) differenz = - differenz; if (differenz > streuung) streuung = differenz; index = (index + 1) % laenge; } } return streuung; }
Grund: cout ist ein Objekt
Grund: als Modul
Grund: kann als Konstruktorparameter angegeben werden
Grund: als Stapel-Objekte
Grund: gar keine Reaktion; Auswirkungen u.U. nur später erkennbar
Grund: Operatorüberladung in Klassen
Grund: wird alles vererbt, nur nicht exportiert
Grund: nur für Haldenobjekte
class CBehaelter { TBehaelter inhalt; public: void schreiben(const T wert) { inhalt = wert; } T lesen(TBehaelter) const { return inhalt; } }
template <class T> T max(const T a, const T b) { return a < b ? b : a; }
Klasse muss den Operator < überladen haben