在一个类里面,用X::operator double() const{
}//意思是把类里面的东西变成double类的
通常有个const用来保证不会修改自己
尽量用自己写的函数来进行类型转化,自动的往往容易错,自己写的一眼就能够看出来。
//举个例子
class Orange;
class Apple{
public:
operator Orange() const;
};
class Orange{
public:
explicit Orange(Apple);//加了explicit就不能够进行自动类型转化了
};
void f(Orange){}
int main(){
Apple a;
f(a);
return 0;
}
Apple类中,表示将Apple类转换成为Orange类了,而且加个const不会修改自己。
第二种方法:做一个专用的类型转换函数:
class Rational{
public:
operator double() const;
};
Rational::operator double() const{
return numerator_/(double)denominator_;
}
Rational r(1,3);
double d = 1.3*r;
表示用operator将this函数转换为double,this并没有改,只是做了一个新的东西出来。