今天无意中看到操作符重载,试探性学习了一下。
发现有一个重载比较特别operator double () const {......}
这个该怎么理解?!
查了一下资料,发现《more effective C++》ITEM5讲到“隐式类型转换运算符”。才知道这是一个类型转换用到的。
隐式类型转换运算符只是一个样子奇怪的成员函数:operator 关键字,其后跟一个类型符号。你不用定义函数的返回类型,因为返回类型就是这个函数的名字。例如为了允许Rational(有理数)类隐式地转换为double类型(在用有理数进行混合类型运算时,可能有用),你可以如此声明Rational类:
class Rational {
public:
...
operator double() const; // 转换Rational类成
}; // double类型
在下面这种情况下,这个函数会被自动调用:
Rational r(1, 2); // r 的值是1/2
double d = 0.5 * r; // 转换 r 到double,
// 然后做乘法