Überladen von operator+.... Funktionsweise?

bigfella

Erfahrenes Mitglied
Hi Leute,
hab n Problem.
Code:
#include <iostream.h>
#include <conio.h>
class box
{
private:
	int length;
   int width;
public:
   void set(int l, int w);
	int get_area(void);
  	box operator+(box b);  	 // Add two boxes using a method

};
void box::set(int l, int w)
{
	length = l;
   width = w;
}
int box::get_area(void)
{
	return length * width;
}

box box::operator+(box b)
{
  	box temp;
	temp.length = length;
   temp.width = width + b.width;
   return temp;
}


int main(void)
{
box small, medium, large;
box temp;

   small.set(1, 2);
   medium.set(3, 4);
   large.set(8, 10);

   cout << "The area is " << small.get_area() << "\n";
   cout << "The area is " << medium.get_area() << "\n";
   cout << "The area is " << large.get_area() << "\n";

  temp = small + medium;
  cout << "The new area is " << temp.get_area() << "\n";

   getch();
   return 0;
}

Versteh die Klasse. Jedoch möchte ich wissen wie das Überladen funktioniert.
Könnt ihr mir bitte erklären wie die Definition von "box operator+(box b)" abläuft?
Welche Werte werden zur Berechnung zur Ausgabe von "temp.get_area()" verwendet?

Danke!
 
Hallo,
wenn ich das richtig lese,
kann man mit dem poperator+ zwei Objekte vom Typ box addieren indem man
die Weiten der beiden boxen addiert. Die Länge des neuen Objektes ergibt sich aus
der Länge des ersten Operanden des +operators.
Dieses Ergebniss wird dann zurückgegeben...

Code:
box a(2,2);
box b(5,3);
// (a + b).get_area() sollte dann 10 ergeben...
Welche Werte werden zur Berechnung zur Ausgabe von "temp.get_area()" verwendet?

temp.length sollte 1 sein und temp.width sollte 6 sein


Gruß

RedWing
 
Zuletzt bearbeitet:
Code:
box a(2,2);
box b(5,3);
// (a + b).get_area() sollte dann 10 ergeben...

HE?
Das Ergebnis wäre dann meiner Meinung nach aber doch 5?

Code:
temp.length = length;
   temp.width = width + b.width;

Weil bei dem Bsp.pro kommt doch eigentlich nur die 6 raus, weil man die beiden width´s addiert?
 
Zurück