過載 型別轉換與運算子

2021-09-06 19:04:30 字數 592 閱讀 1527

前面我們看到由乙個實參呼叫的非顯式建構函式定義了一種隱式的型別轉換,這種建構函式將實參型別的物件轉換成類型別。我們同樣能定義對於類型別的型別轉換,通常定義型別轉換運算子可以做到這一點。轉換建構函式和型別轉換運算子共同定義了類型別轉換,這樣的轉換有時也被稱作使用者定義的型別轉換。

型別轉換運算子

型別轉換運算子是類的一種特殊成員函式,它負責將乙個類型別的值轉換成其他型別。型別轉換函式的一般形式如下所示:

operateor type() const;

其中type表示某種型別。型別轉換運算子可以面向任意型別(除了void之外)進行定義,只要該型別能作為函式的返回型別。因此,我們不允許轉換成陣列或函式型別,但允許轉換成指標(包括陣列指標和函式指標)或者引用型別。

型別轉換運算子既沒有顯式的返回型別,也沒有形參,而且必須定義成類的成員函式。型別轉換運算子通常不應該改變待轉換物件的內容,因此,型別轉換運算子一般被定義成const成員。

注意:乙個型別轉換函式必須是類的成員函式;它不能宣告返回型別,形參列表也必須為空。型別轉換函式通常應該是const。

定義含有型別轉換運算子的類

過載 型別轉換與運算子

轉換建構函式和型別轉換運算子共同定義了類型別轉換 class type conversions 型別轉換運算子 型別轉換運算子是類的一種特殊成員函式,它負責將乙個類型別的值轉換成其他型別。型別轉換函式的一般形式如下所示 operator type const 其中type表示某種型別。型別轉換運算子...

型別轉換 運算子過載

c 中沒有返回型別的函式有3個,建構函式 析構函式 型別轉換函式。operator const char const 如果是過載 的話,那應該寫成 const char operator const而上面所寫的那樣,而且即使是這樣寫那也不正確的,因為運算子過載中有幾個運算子的返回值是有格式的 約定 ...

C 運算子過載與型別轉換

當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的 顯式 引數數量比運算物件的數量少乙個。通常情況下,不應該過載逗號 取位址 邏輯與和邏輯或運算子。關於過載運算子的返回型別 應與其內建版本的返回型別相容 邏輯和關係運算子應該返回bool,算術運算子應該返回乙個類型別,賦值運...