第14章 過載操作符與轉換 8

2021-12-29 23:11:19 字數 853 閱讀 7135

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後接需要定義的操作符號,有返回型別和形參表 不能過載的操作符有 不能通過連線其他合法符號來建立任何新的操作符 過載操作符必須具有乙個類型別運算元,以為如果只有內建型別物件的話,會重新定義原來的操作符 操作符的優先順序和結合性是固定的 不再具備短路求值特性 當運算...