轉換函數:對象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