Car*_*arl 1 c++ operator-overloading
原谅一些看起来很简单的问题,但我想到了这个用例:
struct fraction {
    fraction( size_t num, size_t denom ) : 
        numerator( num ), denominator( denom )
    {};
    size_t numerator;
    size_t denominator;
};
我想做的是使用如下语句:
fraction f(3,5);
...
double v = f; 
有v现持有我的分数所代表的价值.我将如何在C++中执行此操作?
一种方法是定义转换运算符:
struct fraction
{
  size_t numerator;
  size_t denominator;
  operator float() const
  {
     return ((float)numerator)/denominator;
  }
};
大多数人不愿意将隐式转换运算符定义为样式.这是因为转换操作符倾向于"幕后",并且很难判断正在使用哪些转换.
struct fraction
{
  size_t numerator;
  size_t denominator;
  float as_float() const
  {
     return ((float)numerator)/denominator;
  }
};
在此版本中,您将调用该as_float方法以获得相同的结果.