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.