//转换函数:可以实现将一个类转换为令一种类型 举例:
#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;
}