conversion function 转换函数笔记----C++学习之路

  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()....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章