c++利用類做為具體型別來抽象現實世界。有時需要隱式地將乙個具體型別轉換為另乙個具體型別,或轉換為原始型別。此時就需要用到轉換操作符。
#include #include using namespace std;
class complex
// 求複數的絕對值
double mag()
// 轉換操作符
operator double()
private:
// get magnitude
double getmag()
};int main()
執行結果:55
可以使用兩種方式來列印複數的絕對值。
不過,一般來說,應該避免使用方法2。應該讓編譯器在基於型別來呼叫合適的函式上有更多控制權,而不是程式設計師自己期望呼叫哪個函式(這裡的轉換操作符函式中指定呼叫getmag函式)。
更好的實踐是採用特定的成員函式來實現這樣的轉換。只是有時為了適應c的一些庫程式,不得已才這樣使用。
C 運算子過載轉換運算子
為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...
C 運算子 (關係操作符)
現在,讀者已經學會了如何表示資料,接下來我們學習如何處理資料。c語言為處理資料提供了大量的操作,可以在程式中進行算術運算 比較值的大小 修改變數 邏輯的組合等。關係操作符 這類操作符用於測試運算元之間的各種關係。c提供了所有常見的關係操作符。這些操作符是 這些操作符產生的結果都是乙個整型值,而不是布...
C 運算子過載 11 過載 和 操作符
運算子 用於流輸出,而運算子 用於流輸出。在開始過載這些操作符之前,必須注意下面的事項 1 cout是輸出類的物件,而cin是輸入類的物件 2 這些操作符必須過載為全域性函式。如果想要讓它們可以訪問私有成員,則必須定義為友元。為何必須過載為全域性函式?如果操作符過載為乙個成員函式,則它必須是物件的成...