14.9 轉換與類型別
14.9.1 轉換為什麼有用
1. 支援混合型別表示式
2. 轉換減少所需操作符的數目
14.9.2 轉換操作符
轉換操作符(conversion operator)是一種特殊的類成員函式。它定義將類型別值轉變為其他型別值的轉換。轉換操作符在類定義體內宣告,在保留字operator之後跟著轉換的目標型別。
class smallint
} operator int() const
private:
size_t val;
}; 對任何可作為函式返回型別的型別(除了void之外)都可以定義轉換函式。一般而言,不允許轉換為陣列或函式型別,轉換為指標型別(資料和函式指標)以及引用型別是可以的。
轉換函式必須是成員函式,不能指定返回型別,並且形參表必須為空。
雖然轉換函式不能指定返回型別,但是每個轉換函式必須顯式返回乙個指定型別的值。
轉換函式一般不應該改變被轉換的物件。因此,轉換操作通常應定義為const成員。
1.使用類型別轉換
cout<< smallint(100)<
2. 類型別轉換和標準轉換
smallint i(100);
cout<
使用轉換函式時,被轉換的型別不必與所需要的型別完全匹配。必要時可在類型別轉換之後跟上標準轉換以獲得想要的型別。
3. 只能應用乙個類型別轉換
類型別轉換之後不能再跟另乙個類型別轉換。如果需要多個類型別轉換,則**將出錯。
4. 標準轉換可放在類型別轉換之前
使用建構函式執行隱式轉換的時候,建構函式的形參型別不必與所提供的型別完全匹配。
摘自 xufei96的專欄
第14章 過載操作符與轉換 1
14.1 過載操作符的定義 過載操作符是具有特殊名稱的函式 保留字operator後接需定義的操作符符號。像任何其他函式一樣,過載操作符具有返回型別和形參表。除了函式呼叫操作符之外,過載操作符的形引數目 包括成員函式的隱式this指標 與操作符的運算元目相同。函式呼叫操作符可以接受任意數目的運算元。...
第14章 過載操作符與轉換 2
14.2 輸入和輸出操作符 支援i o操作的類所提供的i o操作介面,一般應該與標準庫iostream為內建型別定義的介面相同,因此,許多類都需要過載輸入和輸出操作符。14.2.1 輸出操作符 的過載 為了與io標準庫一致,操作符應接受ostream 作為第乙個形參,對類型別const物件的引用作為...
過載操作符與轉換
過載操作符函式 保留字operator後接需要定義的操作符號,有返回型別和形參表 不能過載的操作符有 不能通過連線其他合法符號來建立任何新的操作符 過載操作符必須具有乙個類型別運算元,以為如果只有內建型別物件的話,會重新定義原來的操作符 操作符的優先順序和結合性是固定的 不再具備短路求值特性 當運算...