1.所谓转换函数,就是一个对象是否可以转换为另外一种类型。转出去,转进来。
2.代码例子:
class Fraction
{
public:
Fraction(int num, int den =1)
:m_numberatror(num),m_denominator(den){}
operator double() const {return (double) (m_numerator/m_denominator(den)); }
private:
int m_numerator; //分子
int m_denominator; //分母
};
这是一个分数类。当然,分数可以转换为double类型,所以,可以又一个double()来转换,注意格式operator。
operator double() const {return (double) (m_numerator/m_denominator(den));
这个就是转换函数。它没有返回类型,返回就是double,转换是无法改变class中的data。所以转换函数通常会加上const
3.转换函数何时被调用?
例子:
Fraction f(3,5);
double d= 4 + f;
第二句的时候,会直接调用operator double()将f转换为0.6.这个过程是由编译器来寻找operator+是否有函数。
但是编译器没有找到operator+的函数,接着会继续找是否有f转换为double的转换函数,OK,有double()这个函数
那么就会将f转换为0.6.。
4.这个例子就是将本身转换出去。
但是转换必须要合理,假如我们希望Fraction转换为string合理的话,那么也能写operator String()....