转换函数:对象A和对象B之间的互相转换。
class Fraction
{
public:Fraction(int num,int den=1):m_numerator(num),m_denominator(den){}operator double()const{return (double)(m_numerator/m_denominator);}
private:int m_numerator; //分子int m_denominator;//分母
}
其中,下述函数是转换函数,其特征为以operator开头,此处是转换成double类型,故写成double()的形式,因为转换函数不改变类中成员数据的内容,故通常加上const标识。由于转换函数的转换类型即为返回值类型,故省略掉返回值。
operator double()const{return (double)(m_numerator/m_denominator);}
调用方式:
Fraction f(3,5);
double d=4+f;//编译器编译到此处时,会去搜索有没有编写
//operator +(int n,Fraction f)的函数,
//如果有,则调用该函数
//如果没有,则会去搜索有没有转换函数,此处就会调用
//operator double()转换函数,将f转换为0.6