C++ Tutorial/Operator Overloading/overload cast operator

Материал из C\C++ эксперт
Перейти к: навигация, поиск

double cast operator

<source lang="cpp">#include <iostream> using namespace std; class Power {

 double b;
 int e;
 double val;

public:

   Power(double base, int exp)
   {
     b = base;
     e = exp;
     val = 1;
     if(exp==0)
        return;
     for( ; exp>0; exp--)
        val = val * b;
   }
 Power operator+(Power o) {
   double base;
   int exp;
   base = b + o.b;
   exp = e + o.e;
   Power temp(base, exp);
   return temp;
 }
 operator double() { return val; } // convert to double

}; int main() {

 Power x(4.0, 2);
 double a;
 a = x;             // convert to double
 cout << x + 1.2; // convert x to double and add 100.2
 cout << "\n";
 Power y(3.3, 3), z(0, 0);
 z = x + y;  // no conversion
 a = z;      // convert to double
 cout << a;
 return 0;

}</source>

17.2
20730.7"