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

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