I'm creating a program that simply show the effect of operator overloading, and I'm having a problem with *=. Code:

I can't place my finger on the problem. ob3 is supposed to have its current value (i) multiplied by the i field in ob2. ob2 is 59000, and the current value of ob3 is 74340. Multiplied together, it equals 4,386,060,000. After operator*= is called, ob3.i has 91,092,704 in it. At first I thought it was this:Code:`#include <iostream>`

using namespace std;

class Overload {

int i;

public:

Overload() {

i = 0;

}

Overload(int x) {

i = x;

}

Overload(const Overload &ol) {

i = ol.i;

}

int getI() {

return i;

}

Overload operator+(int x) {

Overload temp;

temp.i = i + x;

return temp;

}

Overload operator+(Overload ol) {

Overload temp;

temp.i = i + ol.i;

return temp;

}

Overload operator+=(int x) {

i += x;

return *this;

}

Overload operator+=(Overload ol) {

i += ol.i;

return *this;

}

Overload operator++(int x) {

i++;

return *this;

}

Overload operator-(int x) {

Overload temp;

temp.i = i - x;

return temp;

}

Overload operator-(Overload ol) {

Overload temp;

temp.i = i - ol.i;

return temp;

}

Overload operator-=(int x) {

i -= x;

return *this;

}

Overload operator-=(Overload ol) {

i -= ol.i;

return *this;

}

Overload operator--(int x) {

i--;

return *this;

}

Overload operator*(int x) {

Overload temp;

temp.i = i * x;

return temp;

}

Overload operator*(Overload ol) {

Overload temp;

temp.i = i * ol.i;

return temp;

}

Overload operator*=(int x) {

i *= x;

return *this;

}

Overload operator*=(Overload ol) {

i *= ol.i;

return *this;

}

};

int main() {

int y = 59, y2 = 100;

Overload ob1, ob2(10), ob3(ob2);

cout << "ob1's i: " << ob1.getI() << endl;

cout << "ob2's i: " << ob2.getI() << endl;

cout << "ob3's i: " << ob3.getI() << endl << endl;

ob1 = ob1 + 76;

ob2 = ob2 + y;

ob3 = ob3 + ob2;

cout << "ob1's i after adding (operator+) 76: " << ob1.getI() << endl;

cout << "ob2's i after adding (operator+) y, with the value of " << y << ": " << ob2.getI() << endl;

cout << "ob3's i after adding (operator+) ob2: " << ob3.getI() << endl << endl;

ob1 += 25;

ob2 += y2;

ob3 += ob2;

cout << "ob1's i after adding (operator+=) 25: " << ob1.getI() << endl;

cout << "ob2's i after adding (operator+=) y2, with the value of " << y2 << ": " << ob2.getI() << endl;

cout << "ob3's i after adding (operator+=) ob2: " << ob3.getI() << endl << endl;

ob1++;

ob2++;

ob3++;

cout << "ob1's i after adding (operator++) 1: " << ob1.getI() << endl;

cout << "ob2's i after adding (operator++) 1: " << ob2.getI() << endl;

cout << "ob3's i after adding (operator++) 1: " << ob3.getI() << endl << endl;

ob1 = ob1 - 76;

ob2 = ob2 - y;

ob3 = ob3 - ob2;

cout << "ob1's i after subtracting (operator-) 76: " << ob1.getI() << endl;

cout << "ob2's i after subtracting (operator-) y, with the value of " << y << ": " << ob2.getI() << endl;

cout << "ob3's i after subtracting (operator-) ob2: " << ob3.getI() << endl << endl;

ob1 -= 25;

ob2 -= y2;

ob3 -= ob2;

cout << "ob1's i after subtracting (operator-=) 25: " << ob1.getI() << endl;

cout << "ob2's i after subtracting (operator-=) y2, with the value of " << y2 << ": " << ob2.getI() << endl;

cout << "ob3's i after subtracting (operator-=) ob2: " << ob3.getI() << endl << endl;

ob1--;

ob2--;

ob3--;

cout << "ob1's i after subtracting (operator--) 1: " << ob1.getI() << endl;

cout << "ob2's i after subtracting (operator--) 1: " << ob2.getI() << endl;

cout << "ob3's i after subtracting (operator--) 1: " << ob3.getI() << endl << endl;

ob1 = ob1 * 76;

ob2 = ob2 * y;

ob3 = ob3 * ob2;

cout << "ob1's i after multiplying (operator*) by 76: " << ob1.getI() << endl;

cout << "ob2's i after multiplying (operator*) by y, with the value of " << y << ": " << ob2.getI() << endl;

cout << "ob3's i after multiplying (operator*) by ob2: " << ob3.getI() << endl << endl;

ob1 *= 25;

ob2 *= y2;

ob3 *= ob2;

cout << "ob1's i after multiplying (operator*=) by 25: " << ob1.getI() << endl;

cout << "ob2's i after multiplying (operator*=) by y2, with the value of " << y2 << ": " << ob2.getI() << endl;

cout << "ob3's i after multiplying (operator*=) by ob2: " << ob3.getI() << endl << endl;

return 0;

}

ob3 *= ob2;

Which would mean the problem would be the overloaded *= with an Overload argument. But i replaced it with

ob3 = ob3 * ob2;

And it yielded the same result. Can anyone see the problem, its driving me crazy. Thanks :D !