C++自定義隱式轉換函數

轉載自:http://www.cnblogs.com/younes/archive/2010/03/08/1681115.html
C++中單參數構造函數若不聲明爲explict,在合適的場合可以產生隱式轉換:由成員變量類型轉換爲類類型。

  下面的代碼展示如何實現反向的轉換:

void changeFontSize(FontHandle f, int newsize);
class Font{
public:
    operator FontHandle() const   //隱式轉換函數
    {
        return f;
    }
private:
    FontHandle f;
};

Font f;
int newsize;
changeFontSize(f, newsize);      //將Font隱式轉換成FontHandle

  另外,兩個或更多參數的non-explicit構造函數,如果所有形參都提供了默認實參,那麼在需要一個類類型對象的表達式位置,提供一個first形參類型的對象,編譯器也執行隱式轉換,轉換得到一個類對象。如,構造函數Rational(int num1 = 0, int num2 = 1); Rational類中重載了operator*。表達式result = oneHalf * 2; 2發生隱式轉換爲Rational對象。result 和 onehalf爲Rational對象。

發佈了29 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章