C - C++ Operator Overloading - Cast Operator Overloading

#include <iostream>
using namespace std;
 
class forgetcode 
{
  long double d;
  int i;
  long double v;
 
public:
  forgetcode(double b1, int e1)
  {
    d = b1;
    i = e1;
    v = 1;
 
    if(e1==0)
      return;
 
    for( ; e1>0; e1--)
      v = v * d;
  }
 
  forgetcode operator+(forgetcode o) 
  {
    long double b1;
    int e1;
    b1 = d + o.d;
    e1 = i + o.i;
 
    forgetcode temp(b1, e1);
    return temp;
  }
 
  operator long double() { return v; } // convert to double
};
 
 
int main() 
{
  forgetcode x(5.0, 3);
  long double a;
 
  a = x;             
  cout << x + 1.2; 
  cout << "\n";
 
  forgetcode y(4.4, 4), z(1, 1);
 
  z = x + y;  
  a = z;      
  cout << a;
 
  return 0;
}