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