Die Klasse sigma berechnet die laufende Summe der Zahlen, die übergeben werden:
class sigma { double sum; public: sigma() : sum(0.0){} void input(double d) { sum += d;} double getsum() { return sum;} }; int main() { sigma x; x.input(1); x.input(12.5); cout << "The sum is " << x.getsum() << endl; }schreibt
The sum is 13.5
Nun soll jedoch der Durchschnitt der eingegebenen Zahlen ermittelt werden. Statt eine völlig neue Klasse zu definieren, kann sigma erweitert werden:
class mue : public sigma { int n; public: mue() : n(0) {} void input(double d) { sigma::input(d); n++; } double getavg() { return n? getsum()/n : 0;} }; int main() { mue x; x.input(1); x.input(12.5); cout << "Sum " << x.getsum() << endl; cout << "Avg " << x.getavg() << endl; }
schreibt
Sum 13.5 Avg 6.75
Beobachtungen:
class mue : public sigmaSpezifikation der Basisklasse: die public Elemente von sigma werden zu public Elementen von mue.
mue() : n(0) {}Der Default-Konstruktor von mue ruft den Default-Konstruktor von sigma auf. Dies kann auch explizit gemacht werden:
mue() : sigma(), n(0) {}
void input(double d) { sigma::input(d); n++; }Die input-Funktion von sigma wird umdefiniert. Scope Resolution für den Zugriff auf das Original.
double getavg() { return n? getsum()/n : 0; }mue erhält eine zusätzliche Elementfunktion getavg(). Die Funktion getsum() aus sigma wird übernommen.