轉載自: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對象。