轉換函數

轉換函數又稱類型強制轉換成員函數,它是類中的一個非靜態成員函數。它的定義格式如下:

   class <類型說明符1>
    {
     public:
      operator <類型說明符2>();
      …
    }

  這個轉換函數定義了由<類型說明符1>到<類型說明符2>之間的映射關係。可見,轉換函數是用來將一種類型的數據轉換成爲另一種類型。下面通過一個例子說明轉換函數的功能。
#include

class Rational
{
public:
Rational(int d, int n)
{
den = d;
num = n;
}
operator double(); //類型轉換函數

private:
int den, num;
};

Rational::operator double()
{
return double(den)/double(num);
}

void main()
{
Rational r(5, 8);
double d = 4.7;
d+=r;
cout<<D<<ENDL;
}

        轉換函數的名稱是類型轉換的目標類型,因此,不必再爲它指定返回值類型;轉換函數是被用於本類型的數值或變量轉換爲其他的類型,也不必帶參數。
 
  程序輸出結果:

   5.325

  由程序可知,d是一個double型數值,r是Rational類的對象,這兩個不同類型的數據進行加法之所以能夠進行是得益於轉換函數operator double()。爲使上述加法能夠進行,編譯系統先檢查類Rational的說明,看是否存在在下轉換函數能夠將Rational類型的操作數轉換爲double類型的操作數。由於Rational類中說明了轉換函數operator double(),它可以在程序運行時進行上述類型轉換,因此,該程序中實現了d+=r;的操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章