Rückgabe von Objekten durch Funktionen
Im Beispiel ENGLCON haben wir Objekte kennengelernt, die als Argumente an Funktionen übergeben wurden.
Nun werden wir ein Beispiel einer Funktion betrachten, die ein Objekt zurückgibt. Wir werden das Programm
ENGLCON abändern, um ENGLRET zu erhalten:
// englret.cpp
// Funktion gibt Wert vom Typ Distance zurück
#include <iostream.h>
class Distance // Klasse für Englisches Maßsystem
{
private:
int feet;
float inches;
public:
Distance() { feet = 0; inches = 0.0; } // Konstruktor
Distance(int ft,float in) // Konstruktor (zwei Argumente)
{ feet = ft; inches = in; }
void getdist() // Länge vom Anwender einlesen
{
cout << "\nGeben Sie Feet ein: "; cin >> feet;
cout << "Geben Sie Inch ein: "; cin >> inches;
}
void showdist() // Längenangabe anzeigen
{ cout << feet << "\'-" << inches << '\"'; }
void add_dist(Distance); // Addition
};
// Addieren dieserr Länge zu d2
void Distance::add_dist(Distance d2)
{
Distancd temp; // Zeitweilige Variable
temp.inches = inches + d2.inches; // Inch zusammenzählen
if(temp.inches >= 12.0) // Wenn Gesamtsumme 12.0 übersteigt
{
temp.inches -= 12.0; // Inch um 12.0 vermindern;
temp.feet++; // und Feet um 1 erhöhen
}
temp.feet += feet + d2.feet; // Feet zusammenzählen
return temp;
}
void main()
{
Distance dist1,dist3; // Zwei Längenangaben definieren
Distance dist2(11,6.65); // dist2 definieren und initialisieren
dist1.getdist(); // dist1 vom Amwender einlesen
dist3 = dist1.add_dist(dist2); // dist3 = dist1 + dist2
// Längen anzeigen
cout << "\ndist1 = "; dist1.showdist();
cout << "\ndist2 = "; dist2.showdist();
cout << "\ndist3 = "; dist3.showdist();
}
Vom Standpunkt das Anwenders aus arbeitet ENGLRET genau wie ENGLCON. Tatsächlich ist das neue Programm
dem Beispiel ENGLCON sehr ähnlich, aber die Unterschiede offenbaren sich in der Art, in der Funktionen
mit diesem Objekten zusammenarbeiten.
38