C++ conversion function 转换函数

//转换函数:可以实现将一个类转换为令一种类型  举例:
#include <iostream> 
using namespace std;
class Fraction
{//一个分数类
public:
     Fraction(int num,int den=1) 
     :m_numerator(num),m_denominator(den)
     {}
     operator double() const {
     //转换函数 
     //不改动分子分母的值,所以应该及时加上const以避免出现错误 
     return (double)(m_numerator/(m_denominator*1.0));//注意浮点数的转化; 
     }
     int get() const{
     return m_denominator; }
private:
    int m_numerator;//分子
    int m_denominator; //分母 
}; 
int main()
{
    Fraction f(3,5);
    double d;
    d=4+f;//调用函数实现类型的转化
    /*底层编译器的具体实现方式为: 
    1.编译器首先分析是否存在操作符重载,即看一下"+"这个操作符有没有在class中定义
    2.当编译器发现没有操作符重载,class对操作符没有定义,开始将对象f进行转换,转化为double类型,然后运算
    */ 
    cout<<d<<endl;
    return 0;
}

 

posted @ 2020-01-28 19:55  zmachine  阅读(262)  评论(0编辑  收藏  举报