|
在 使用 friend 函式重載運算子
中,您使用friend函式解決基本型態與自訂型態相加、相減等運算的問題,也就是像10 + someObject、10 -
someObject這類的運算可透過friend函式來重載相對應的運算子。 然而想想在更多的運算需求中,您可能對+、-、*、/、%等等的運算子都想有基本型態與自訂型態運算的需求,為每一個需求都重載相對應的運算子似乎是不合 效率的,內建的型態轉換行為在 算術 (Arithmetic)運算、型態轉換(Type conversion) 中有介紹過,所以您該提供的是一個自動型態轉換,在需要的時候,編譯器會根據您的自訂型 態轉換,自動將您的自訂型態轉換為基本型態或您指定的型態。 直接以實例說明如何自訂型態轉換:
class Integer {
#include "Integer.h" Integer類別將int基本型態包裝為物件,以提供更多物件導向上的操作行為,例如提供compareTo()函式支援兩個Integer實例的比 較,而為了支援與int基本型態的直接算術行為,您使用operator int()定義了如何轉換,當編譯器需要作int型態轉換時,就會使用您自定義的行為,例如:
#include <iostream> 執行結果:
operator後緊跟著的即是轉換的目標型態,自定義型態轉換不只可以轉換至基本型態,您也可以指定轉換為自訂義型態,例如: class Some {
public: .... operator Other() { .... } }; 要注意的是轉換函式不能有參數列。 |