int i;
double d;
d = i;
同樣,以下語句會將d中的值轉換為整數(截斷小數部分)並將其儲存在i中:i = d;
類物件也可以使用相同的功能。例如,假設 distance 是一個 Length 物件,d 是一個 double,如果 Length 被正確編寫,則下面的語句可以方便地將 distance 作為浮點數儲存到 d 中:d = distance;
為了能夠像這樣使用語句,必須編寫運算子函數來執行轉換。以下就是一個將 Length 物件轉換為 double 的運算子函數:Length::operator double() const { return len_inches /12 + (len_inches %12) / 12.0; }該函數計算以英尺為單位的長度測量的實際十進位制等效值。例如,4 英尺 6 英寸的尺寸將被轉換為實數 4.5。
注意,函數頭中沒有指定返回型別,是因為返回型別是從運算子函數名稱中推斷出來的。另外,因為該函數是一個成員函數,所以它在呼叫物件上執行,不需要其他引數。
下面的程式演示了帶有 double 和 int 轉換運算子的 Length 類。int 運算子將只是返回 Length 物件的英寸數。//Length2.h的內容 #ifndef _LENGTH1_H #define _LENGTH1_H #include <iostream> using namespace std; class Length { private: int len_inches; public: Length(int feet, int inches) { setLength(feet, inches); } Length(int inches){ len_inches = inches; } int getFeet() const { return len_inches / 12; } int getInches() const { return len_inches % 12; } void setLength(int feet, int inches) { len_inches = 12 *feet + inches; } // Type conversion operators operator double() const; operator int () const { return len_inches; } // Overloaded stream output operator friend ostream &operator << (ostream &out, Length a); }; #endif //Length2.cpp 的內容 #include T,Length2. hn Length::operator double() const { return len_inches /12 + (len_inches %12) / 12.0; } ostream &operator<<(ostream& out, Length a) { out << a.getFeet() << " feet, " << a.getInches() << " inches"; return out; } // This program demonstrates the type conversion operators for the Length class. #include "Length2.h" #include <iostream> #include <string> using namespace std; int main() { Length distance(0); double feet; int inches; distance.setLength(4, 6); cout << "The Length object is " << distance << "." << endl; // Convert and print feet = distance; inches = distance; cout << "The Length object measures" << feet << "feet." << endl; cout << "The Length object measures " << inches << " inches." << endl; return 0; }程式輸出結果:
The Length object is 4 feet, 6 inches.
The Length object measures 4.5 feet.
The Length object measures 54 inches.