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;的操作。