【C++重载操作符】operator double () const {}的理解

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:24   3210   0

今天无意中看到操作符重载,试探性学习了一下。

发现有一个重载比较特别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,
                                         // 然后做乘法
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP