C++ Tutorial/Operator Overloading/overload cast operator


Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/includes/exception/MWExceptionHandler.php on line 179

Deprecated: Creation of dynamic property PPDStack::$accum is deprecated in /var/www/cppe.ru/www/includes/parser/Preprocessor_DOM.php on line 803

Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/includes/exception/MWExceptionHandler.php on line 179

Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/vendor/mediawiki/at-ease/src/Functions.php on line 48
Материал из C\C++ эксперт
Перейти к: навигация, поиск

double cast operator

#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;
}
17.2
20730.7"